Если я поменяю местами два вектора, их итераторы останутся действительными, теперь просто указывая на «другой» контейнер, или итератор станет недействительным?
То есть, учитывая :
using namespace std;
vector<int> x(42, 42);
vector<int> y;
vector<int>::iterator a = x.begin();
vector<int>::iterator b = x.end();
x.swap(y);
// a and b still valid? Pointing to x or y?
Кажется, в std ничего об этом не сказано:
[n3092 - 23.3.6.2]
void swap (vector
& x); Эффекты: Меняет содержимое и емкость () of * this with the of x.
Обратите внимание, что, поскольку я использую VS 2005, меня также интересуют эффекты проверок отладки итератора и т. д. (_SECURE_SCL)