Если я поменяю два вектора, будут ли их итераторы оставаться в силе, теперь просто указывая на "другой" контейнер, или итератор будет недействителен?
То есть, данный:
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<T,Allocator>& x);
Эффекты: Обменивает содержимое и емкость() * этого с тем из x.
Обратите внимание, что поскольку я на VS 2005, я также заинтересован в эффектах проверки отладки итератора и т.д. (_SECURE_SCL)