Здравствуйте malloc, вы писали:
M>как правильно удалять элементы из списка?
M>код примерно такой
M>MyType::iterator it = mylist.begin(); M>for(; it != mylist.end(); it++) M>{ M> if (something) M> mylist.erase(it) M>}
M>очевидно как-то нарушает целостность итератора M>как правильно переписать этот участок? M>
Итератор становится невалидным, потому что удаляется элемент, на который он указывает.
while ( it != mylist.end() )
{
if ( something )
it = mylist.erase( it );
else
++it;
}