我有一个 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
}
原文由 Shibli 发布,翻译遵循 CC BY-SA 4.0 许可协议
std::vector
使用at()
成员函数时执行边界检查,但 不使用operator[]
执行任何检查。当超出范围时
operator[]
会产生未定义的结果。