假设您正在使用嵌套的for循环遍历列表,如下所示:
for( list<Object>::iterator iter = list.begin() ; iter != list.end() ; ++iter )
{
for( list<Object>::iterator iter2 = list.begin() ; iter2 != list.end() ; ++iter2 )
{
if( iter != iter2 )
{
if( some other condition )
{
iter2 = list.erase( iter2 ) ;
// uh oh! what about iter?
}
}
}
}如何维护iter
发布于 2012-10-30 00:44:38
list:erase only invalidates the iterators pointing to the item being erased。因为iter不等于iter2,所以你应该没问题。
https://stackoverflow.com/questions/13125841
复制相似问题