だから私はこの質問を見ました。これは基本的に、参照とイテレータが一緒に無効になることを示しています。
特定のケースでイテレータが無効になる理由はわかりますが、参照が無効になるのはなぜですか?
実用的な観点からは、なぜこれが必要なのかわかりません。
それは単なる設計上の決定でしたか、それとも実際的な理由がありますか?
編集:明確にするために、基になる構造を理解している限り、再割り当てする必要があるのはデータへのポインターにすぎません(データ(およびその参照)はそのまま残ります)。右?
いくつかのテスト コード:
#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
}