vector走出界限,不给错误
我有一个std::vector
。 我检查它的大小是6,但是当我尝试访问vec[6]
来检查它是否会给出错误时,我得到没有错误,但是有一些数字。 它不应该给一个错误?
编辑:像这样的东西:
struct Element { std::vector<double> face; }; int main() { Element elm; .... // insert 6 elements into elm.face std::cout << elm.face.size() << std::endl; // answer is 6 std::cout << elm.face[6] << std::endl; // answer is some number }
STL向量在调用.at()
成员函数时执行边界检查,但不对[]
运算符执行任何检查 。
当超出界限时, []
运算符产生未定义的结果。
这是未定义的行为。 未定义的行为并不一定意味着你会得到一个错误:你可能会 ,但你可能会得到一些没有多大意义的结果。
数据结构索引从0开始,所以如果你正在访问vec [6],那么这将是越界。 由于内存问题,您可能不会收到错误; 从之前的代码中可能会出现一些错误或者类似的错误。 请张贴代码。