У меня есть карта, которая определена в глобальной памяти.
Я перебираю это, скажем, я в третьем элементе. теперь я вызываю другую функцию, которая генерирует свой собственный итератор для той же карты, однако она может стереть 4-й или 5-й ... элементы на карте.
мой вопрос: когда я вернусь из этой функции и продолжу перебирать карту (напомню, я в третьем элементе), мой итератор может быть недействительным или это безопасно?
извините, я не могу прикрепить код, он очень очень длинный.
спасибо
EDIT:
у меня вопрос примерно такой:
map<string,string> mapi;
void er() {
mapi.erase("t");
}
int main() {
mapi.insert(pair<string,string>("w","a"));
mapi.insert(pair<string,string>("e","a"));
mapi.insert(pair<string,string>("r","a"));
mapi.insert(pair<string,string>("t","a"));
mapi.insert(pair<string,string>("A","a"));
mapi.insert(pair<string,string>("u","a"));
mapi.insert(pair<string,string>("C","a"));
map<string,string>::iterator it;
for (it=mapi.begin(); it!=mapi.end(); it++) {
cout << it->first << endl;
if (it->first=="t")
er();
}
}
в этом случае я стираю тот же элемент - valgrind говорит, что это ошибка. Однако, когда я удаляю другие элементы, он, кажется, работает нормально.