尝试运行该程序时出现崩溃,错误是表达式:超出范围的向量下标。有什么问题?

std::vector<DepositCustomers> Deposits; //depositcustomers is a class
std::ifstream fin("in.txt");
int contor = 1;
while (!fin.eof())
{
    Deposits.resize(contor);
    fin >> Deposits[contor];
    contor++;
}


我试过不调整大小,是同一回事。

最佳答案

如果将向量的大小调整为,则向量中只有1个项目的空间。由于向量使用基于0的索引,因此此项位于索引1处。因此,当您尝试将某些内容放置在索引0上时,它会因观察到的错误而失败。

为了使代码正常工作,您可以进行以下更改:

fin >> Deposits[contor - 1];


也许还更好,使用1可以省去调整大小的麻烦。

10-08 09:27