1

我得到向量下标超出范围错误。我以前有过它,但它会打印“之前”,但不会打印“之后”,所以我很困惑为什么其中一条线会导致它。

cout << "before" << endl;
vector<vector<char>> animals;
vector<vector<char>> food;
vector<char> other;
int lastline = 0;
for(int i=1;i<=(c);i++){
cout << "after" << endl;
4

1 回答 1

2

如果c是任何向量中元素的计数,那么错误只是在具有N项目的向量中,项目索引是0...[N-1]而不是1...N

因此,请进行以下更正:

for(int i=0; i < (c); i++) {

顺便说一句,在类 C 语言中for,迭代次数的循环原型N并非巧合:

for(int i = 0; i < N; ++i)

坚持这一点,除非你有一个非常好的理由来例外,并且你可以“免费”避免这种类型的错误。

于 2011-05-07T11:56:12.227 回答