Делает ли std :: vector :: swap недействительными итераторы?

Если я поменяю местами два вектора, их итераторы останутся действительными, теперь просто указывая на «другой» контейнер, или итератор станет недействительным?

То есть, учитывая :

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)

39
задан Martin Ba 8 November 2010 в 16:37
поделиться