c++ - vector 下标超出范围

标签 c++ vector range subscript

<分区>

我遇到了 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/

相关文章:

c++ - 我如何有效地处理 OpenGL 中的大量逐顶点属性?

C++ QT 将 QList 中的项目转换为子类

c++ - 关于 vector 和删除与其关联的内存的问题

c++ - 如何将具有相同类型的不同 vector 数据成员的类对象传递给可以对任何这些数据成员进行操作的函数

c++ - C++ 中的 vector 、代理类和点运算符

c++ - Eclipse:C++静态库中的C代码,由C++库引用导致 undefined reference

c++ - Visual Studio 中的 "Pointer to reference"错误未按发生位置的文件名显示

javascript - 在 JS 中重置 HTML 范围输入不会移动显示的 slider

javascript - 如何使用reduce 测试数组的Math.max 函数

arrays - Delphi 检查字符是否在 'A' 范围内。 .'Z' 和 '0' 。 .'9'