向量超出范围而不给出错误

新手上路,请多包涵

我有一个 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 许可协议

阅读 684
2 个回答

这是未定义的行为。未定义的行为并不一定意味着你会得到一个错误:你 _可能会_,但你可能会得到一些没有多大意义的结果。

原文由 icktoofay 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题