<分区>
我遇到了 vector 下标超出范围的错误。我以前有过,但它打印“之前”但不打印“之后”,所以我很困惑为什么其中一行会导致它。
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;
<分区>
我遇到了 vector 下标超出范围的错误。我以前有过,但它打印“之前”但不打印“之后”,所以我很困惑为什么其中一行会导致它。
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;
最佳答案
如果 c
是任何 vector 中元素的计数,那么错误很简单,即在具有 N
项的 vector 中,项索引为 0.. .[N-1]
而不是 1...N
。
因此,进行此更正:
for(int i=0; i < (c); i++) {
顺便说一句,在类 C 语言中,迭代 N
次的 for
循环的原型(prototype)并非巧合:
for(int i = 0; i < N; ++i)
除非您有非常非常充分的理由进行异常(exception)处理,否则请坚持这样做,并且您可以“免费”避免此类错误。
关于c++ - vector 下标超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920839/