使用默认构造函数初始化std :: vector

时间:2011-03-14 04:10:14

标签: c++ c++-standard-library

我有一个类字段,它是一个std :: vector。我知道我希望这个向量包含多少个元素:N。如何用N个元素初始化向量?

3 个答案:

答案 0 :(得分:7)

class myclass {
   std::vector<whatever> elements;
public:
   myclass() : elements(N) {}
};

答案 1 :(得分:6)

std::vector有一个构造函数声明为:

vector(size_type N, const T& x = T());

您可以使用它来构建包含std::vector Nx副本的xT的默认值是初始化的值T(如果std::vector是具有默认构造函数的类类型,则值初始化是默认构造)。

使用此构造函数初始化struct S { std::vector<int> x; S() : x(15) { } } 数据成员非常简单:

{{1}}

答案 2 :(得分:1)

允许您指定大小的所有构造函数也会调用元素的构造函数。如果效率至关重要,您可以使用reserve()成员函数来保留大小。这实际上并不创建任何元素,因此它更有效。但是,在大多数情况下,通过向量构造函数提供大小就可以了。