以下代码不会引发错误:
int main()
{
typedef std::vector<int> intstack;
intstack mystack;
mystack.push_back(7);
mystack.push_back(8);
mystack.push_back(9);
mystack.pop_back();
std::cout << mystack.size(); //prints 2
std::cout << mystack[2]; // prints 9
return 0;
}
我原本认为第std::cout << mystack[2]
行会引发错误,因为pop_back
操作已调整了向量的大小。为什么数据仍可访问?是因为底层数组中的数据仍然存在且向量pop_back
操作只修改迭代器吗?
答案 0 :(得分:8)