C++容器的迭代器失效规则是什么?
优选地以摘要列表格式.
(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)
考虑这个例子:
std::vector<int> v1 = { 1, 2, 3 };
const int* i = &v1[1];
std::vector<int> v2(std::move(v1));
std::cout << *i << std::endl;
Run Code Online (Sandbox Code Playgroud)
尽管在许多STL实现中这可能会起作用,但是我可以通过标准保证在std::vector移动a时不执行重新分配,并且内部缓冲区支持v2与以前的内部缓冲区支持相同v1?我无法在互联网上找到这些信息,也无法在标准本身上找到这些信息.