Здравствуйте, Сыроежка, Вы писали:
С>Здравствуйте, yaser, Вы писали:
Y>>есть что-то типа такого Y>>typedef std::list<class_impl*> MainList; Y>>typedef std::list<MainList::iterator> SubMainCList;
Y>>MainList c; Y>>SubMainCList cs;
Y>>где-то в коде Y>>cnl::MainList::iterator i = c.insert(channel->consumers.begin(), impl); Y>>cs.push_back(i);
Y>>еще где-то в коде Y>>for(SubMainCList::iterator it = cs.begin(); it != cs.end(); it++){ Y>> if (*(*it) == this) { Y>> с.erase(*it); Y>> cs.erase(it); Y>> }
Y>>Корректно ли хранить итератор? Правильно ли в такой последовательности удалять?
Обратите внимание также на то, что в вашем примере кода, итераторы в списке располагаются в обратном порядке по сравнению с элементами исходного списка. Так как сами элементы с помощью insert добавляются в начало списка, а итераторы с помощью push_back добавляются в конец списка.