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

How can I initialize a vector of objects in C++?

本文关键字:对象 向量 初始化 C++      更新时间:2023-10-16

给定以下代码:

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

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

以下任何一个都可以工作:

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);

根据您的用例,可能还有其他选项。

您的程序确实会向allWorkers添加任何对象,因为allWorkers是以下之后的空向量:

vector<Worker> allWorkers;

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

应该这样做。

你在第一行创建一个空向量。

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

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

或者

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