When we do not specify an element initializer, then the library creates a value initialized element initializer for us. This library-generated value is used to initialize each element in the container. The value of the element initializer depends on the type of the elements stored in the vector.
(1)、If the vector holds elements of a built-in type, such as int, then the library creates an element initializer with a value of 0:
vector<string> fvec(10); // 10 elements, each initialized to 0
(2)、If the vector holds elements of a class type, such as string, that defines its own constructors, then the library uses the value type's default constructor to create the element initializer:
vector<string> svec(10); // 10 elements, each an empty string
|
As we'll see in Chapter 12, some classes that define their own constructors do not define a default constructor. We cannot initialize a vector of such a type by specifying only a size; we must also specify an initial element value. |
There is a third possibility: The element type might be of a class type that does not define any constructors. In this case, the library still creates a value-initialized object. It does so by value-initializing each member of that object.
本文探讨了在C++中初始化容器元素的几种方式。当未指定元素初始化器时,库会为容器中的每个元素创建一个值初始化的元素。对于内置类型如int,元素将被初始化为0;对于类类型如string,使用默认构造函数进行初始化;对于没有定义任何构造函数的类类型,将通过值初始化每个成员。
1万+

被折叠的 条评论
为什么被折叠?



