gpt4 book ai didi

c++ - 删除元素时 map 迭代器如何失效?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:30 25 4
gpt4 key购买 nike

<分区>

使用 erase 方法时,迭代器何时以及如何在映射中失效?

例如:

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 ++ ) ;
}

删除的迭代器肯定会变得无效(它在递增的同时仍然有效)但是其他人呢?

如果我没记错的话,标准说映射必须是平衡二叉树或具有等效键搜索复杂度的结构

如果映射是用树实现的,我可以假设未删除的迭代器仍然有效吗?

还有其他可能的 map 实现方式吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com