矢量下标超出范围

时间:2011-05-07 11:51:41

标签: c++ vector range subscript

我得到的矢量下标超出了范围错误。我之前已经拥有它,但是它在'之前'打印但它不会'打印'之后'所以我很困惑为什么其中一条线会导致它。

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;

1 个答案:

答案 0 :(得分: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)

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