qwl*_*ice 6 c++ iterator stl stdmap std
使用擦除方法时,地图中的迭代器何时以及如何失效?
例如 :
std :: map < int , int > aMap ;
aMap [ 33 ] = 1 ;
aMap [ 42 ] = 10000 ;
aMap [ 69 ] = 100 ;
aMap [ 666 ] = -1 ;
std :: map < int , int > :: iterator itEnd = aMap.lower_bound ( 50 ) ;
for ( std :: map < int , int > :: iterator it = aMap.begin ( ) ;
it != itEnd ;
// no-op
)
{
aMap.erase ( it ++ ) ;
}
Run Code Online (Sandbox Code Playgroud)
擦除的迭代器肯定会变得无效(它在增加时仍然有效)但是其他的呢?
如果我没有错,标准说地图必须是平衡的二叉树或具有相同的密钥搜索复杂性的结构
如果地图是用树实现的,我可以假设没有擦除的迭代器仍然有效吗?
那么实现地图的其他可能方法呢?
| 归档时间: |
|
| 查看次数: |
5107 次 |
| 最近记录: |