假设我有以下代码:
typedef std::map< int, std::string >::iterator Iterator;
Iterator iter = myMap.begin();
while (iter != myMap.end())
{
Iterator current = iter;
++iter;
maybeDeleteElement( current ) // may call erase.
}
鉴于它std::map
是作为红黑树实现的,是否可以保证地图中的每个元素都将被访问一次?或者修改地图会导致树重新平衡,从而改变迭代顺序?
注意:这不是关于任何迭代器是否会失效的问题。但是保持有效的迭代器并不一定意味着增加它会给你提供与之前相同的下一个元素。