MBe*_*Ben 6 c++ stl std stdvector visual-c++
我不确定这段代码有什么问题:
std::vector<int> myVector(0);
if (myVector.back() == 12)
myVector.push_back(12);
Run Code Online (Sandbox Code Playgroud)
似乎在空向量上调用back()会使程序崩溃.
我不明白为什么会崩溃?我们需要在调用之前检查向量的长度back()吗?或者可能是一个错误?
文档说,如果向量为空,则返回未定义的值.
CB *_*ley 13
在调用back()之前我们需要检查向量的长度吗?
总之一句:是的.这是你的错误,你的向量是空的,所以没有"后退"元素.
文档应该说(如果它说的话),调用back()空向量会导致未定义的行为,而不是它返回一个未定义的值.
c ++ 11标准告诉我:
23.3.2.8/3
对于零大小的数组调用front()或back()的效果是未定义的.
由于行为未定义,任何事情都可能发生.你很幸运遇到了崩溃.
| 归档时间: |
|
| 查看次数: |
5132 次 |
| 最近记录: |