如何在C ++中初始化对象向量?

时间:2016-02-22 21:43:44

标签: c++

给出以下代码:

vector<Worker> allWorkers;
allWorkers.resize(10);
for(int i=0; i<allWorkers.size(); i++){
   allWorkers.push_back(Worker());
}

上面的代码不起作用。我想要的只是用向量类型的对象填充向量。我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

其中任何一个都可行:

vector<Worker> allWorkers;
int numberOfWorkersToAdd = 100; // put whatever number you want here
for(int i=0; i<numberOfWorkersToAdd; i++){
   allWorkers.push_back(Worker());
}

可替换地:

vector<Worker> allWorkers;
int numberOfWorkersToAdd = 100; // put whatever number you want here
allWorkers.resize(numberOfWorkersToAdd);

根据您的使用情况,可能还有其他选项。

答案 1 :(得分:0)

您的程序确实会向allWorkers添加任何对象,因为allWorkers是一个空向量:

vector<Worker> allWorkers;

使用

size_t size = <some size>;
vector<Worker> allWorkers(size);

应该这样做。

答案 2 :(得分:0)

您正在第一行创建一个空矢量。

在for()循环中,您将进行迭代,直到达到矢量列表的大小。在这种情况下,大小为0,这意味着迭代永远不会发生。

我首先会找到一种方法来计算你拥有多少个Worker对象,并使用该大小作为循环约束。

答案 3 :(得分:0)

或者你可以写 auto allWorkers = vector<Worker>(100,Worker()); 其中100是工人的数量。