如何在循环中创建对象并将它们存储在循环外的向量中?

问题描述 投票:0回答:1

我需要根据参数输入的金额创建一定数量的

tellers
(对象)。这个循环在一个方法中:

void simulate(const std::string &fileName, int lines, int tellerAmount)

但是,在循环中创建对象然后将它们存储在

vector
中似乎不起作用,因为它无法访问索引大于 1 的对象的属性,而是创建奇数值。我不知道这些值意味着什么。

任何人都可以帮助我理解这些价值观并解决这个问题吗?

我第一次尝试这个:

std::vector<tellers> tellerList;
for(int i = 1; i <= tellerAmount; i++){
    tellerList.emplace_back(i);
}
std::cout << tellerList[0].tellerNum << ", " << tellerList[1].tellerNum << ", " << tellerList[2].tellerNum;

打印出:

1,-1414812757,-17891602

然后我尝试:

std::vector<tellers*> tellerList;
for(int i = 1; i <= tellerAmount; i++){
    auto pTeller = new tellers(i);
    tellerList.emplace_back(pTeller);
}
std::cout << std::to_String(tellerList[0]->tellerNum) << ", " << std::to_String(tellerList[1]->tellerNum) << ", " << std::to_String(tellerList[2]->tellerNum);

这会导致分段错误。

c++ loops pointers vector shared-ptr
1个回答
0
投票

试试这个:

std::vector<teller> tellerContainer;
for (int i = 0; i < tellerAmount; i++)
{
    teller t{0};
    tellerContainer.push_back(t);
}

请注意,使用

push_back()
方法时会制作一份副本。

此外,上面的示例中没有显式分配动态内存。

© www.soinside.com 2019 - 2024. All rights reserved.