对pop_back(),C++感到困惑

Bri*_*ian 4 c++

我试图理解的行为vector::pop_back().所以我有以下代码片段:

vector<int> test;
test.push_back(1);
test.pop_back();
cout << test.front() << endl;
Run Code Online (Sandbox Code Playgroud)

也许这是对的,但令我惊讶的是它打印出来1.所以我很困惑.是pop_back()唯一能够删除的元素有index > 0

提前致谢!

Set*_*gie 18

您通过调用front空向量来调用未定义的行为.这就像索引一个数组的边界.任何事情都可能发生,包括返回1.


bdo*_*lan 10

pop_back这里把矢量留空了.访问空向量front()未定义的行为.这意味着任何事情都可能发生 - 没有预测到什么.它可能会崩溃,它可以返回1,它可以返回42,它可以打印"Hello,world!",它可以擦除你的硬盘,或者它可以通过你的鼻道传唤恶魔.就C++而言,任何这些都是可以接受的行为 - 这里恰好最终会返回1.不要依赖它.