为什么我可以在调整大小后仍然访问矢量数据?

时间:2014-06-16 23:51:30

标签: c++ vector stdvector

以下代码不会引发错误:

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操作只修改迭代器吗?

1 个答案:

答案 0 :(得分:8)

std::vector operator[]不执行范围检查。

at() member function

您的第std::cout << mystack[2]行有未定义的行为。