Удалено избыточное цитирование. — SchweinDeBurg
Здравствуйте, rus blood, Вы писали:
RB>Итератор I остается старым -> инвалидируется...
Т.е. Вы утверждаете, что синхронизация в данном случае невозможна?
Так же думает и Psyton.
Ну а зачем тогда объекты синхронизации? Они — то как раз и имеют цель предотвратить
доступ к вектору когда идет запись в него, иначе говоря предназначенны сделать использоване обычной коллекции потоко-безопасным.
Если бы Ваше предполжение о перераспределении памяти было верно, то был бы нерабочим элементарный код:
vector<int> v;
vector<int>::iterator I;
for(i = 0; i < 10000; i++)
v.push_back(1);
for(I = v.begin(); I < v.end(); I++)
//используем I.
for(i = 0; i < 10000; i++)
v.push_back(2); //Память перераспередлилась.
for(I = v.begin(); I < v.end(); I++)
//используем I. <<тут была бы ошибка. А это, согласитесь, мягко говоря не так.
Я предположил другую причину.
И нашел решение которое реально заработало

в моем коде.