所以我看到了这个问题,它基本上说引用和迭代器一起失效。
我明白为什么在某些情况下迭代器无效,但为什么引用无效?
从实际的角度来看,我不明白为什么需要这样做。
这只是一个设计决定还是有一些实际原因?
编辑:澄清一下,据我了解底层结构,它只是指向需要重新分配的数据的指针(数据(以及对它的引用)可以保持不变)。对?
一些测试代码:
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<string> yourVect;
yourVect.push_back("def");
vector<string>::iterator iter = yourVect.begin();
const string& ref = *iter;
yourVect.insert(yourVect.begin(), "abc");
cout << ref << endl; // !! --- doesn't work - why ?? --- !!
cout << *iter << endl; // obviously doesn't work
}