我需要根据参数输入的金额创建一定数量的
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);
这会导致分段错误。
试试这个:
std::vector<teller> tellerContainer;
for (int i = 0; i < tellerAmount; i++)
{
teller t{0};
tellerContainer.push_back(t);
}
请注意,使用
push_back()
方法时会制作一份副本。
此外,上面的示例中没有显式分配动态内存。