Говорят, что если поменять значение двух контейнеров, итератор не станет недействительным.
, поэтому следующий код работает нормально
vector<int> v1;
v1.push_back(1);
vector<int>::iterator i = v1.begin();
vector<int> v2(v1);
v2.swap(v1);
cout<<*i<<endl; //output 1
но когда я обратился к временному контейнеру, итератор стал недействительным, и программа потерпела крах.
vector<int> v1;
v1.push_back(1);
vector<int>::iterator i = v1.begin();
vector<int>(v1).swap(v1);
cout<<*i<<endl; //i become invalid and program crashes here
Это может быть глупый вопрос, но я не могу понять, что не так.