对c++的pop_back()感到困惑

Confused about pop_back(), C++

本文关键字:back c++ pop      更新时间:2023-10-16

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

vector<int> test;
test.push_back(1);
test.pop_back();
cout << test.front() << endl;

也许它是对的,但是让我惊讶的是它打印出1。所以我很困惑。pop_back()只能够除去含有index > 0的元素吗?

提前感谢!

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

pop_back在这里使向量为空。访问空向量的front()未定义行为。这意味着任何事情都有可能发生——没有预测什么。它可能崩溃,它可能返回1,它可能返回42,它可能打印"Hello, world!",它可以擦除你的硬盘,或者它可以通过你的鼻腔召唤恶魔。这些都是可以接受的行为,就c++而言——这里只是发生了最终返回1。不要依赖它