用C ++初始化向量?

时间:2015-03-12 22:17:45

标签: c++ vector

我有一个名为vector_size的变量。该变量的值由用户在运行时输入。我也有一个MyClass类。

我想创建一个MyClass的向量。我希望向量具有vector_size元素。我该怎么做?

这是我迄今为止所尝试过的:

vector <MyClass> myVector (vector_size) = MyClass();

上面的代码不起作用。我如何制作vector_size的矢量,并初始化每个元素?

请注意,我不想只是&#34;预留空间&#34;对于vector_size元素。我希望使用vector_size元素填充向量,并且每个元素都需要使用构造函数进行初始化。

基本上,我想在一行中执行以下操作:

vector <MyClass> myVector;
for (int counter = 0; counter < vector_size; counter++) {
    myVector.pushBack (MyClass());
}

3 个答案:

答案 0 :(得分:7)

要走的路是:

vector<MyClass> myVector(size, MyClass());

这也应该有效:

vector<MyClass> myVector(size);

第一个变体采用将用于构造向量元素的对象,第二个变体将使用默认构造函数初始化它们,因此在这种情况下,两个变体应该是等效的。

答案 1 :(得分:2)

MyClass应该有一个默认的构造函数,或者一个不带任何参数来执行你想要的构造函数。

然后你可以打电话:

vector <MyClass> myVector (vector_size);

答案 2 :(得分:1)

在此示例中查看std::vector<int> secondhttp://www.cplusplus.com/reference/vector/vector/vector/

当你在那里看看&#34;填充构造函数&#34;对于std :: vector。

对于您的情况:std::vector<MyClass> v(vector_size, MyClass());