迭代时擦除std :: map的其他元素

时间:2015-12-02 17:13:35

标签: c++ algorithm

我有一个包含以下键值对的地图。 {(α,β),(B,Q),(C,R),(d,S),...(G,Z)}

我正在迭代这个地图,并且在每个元素处,我采用一个访问同一个地图的分支,并在满足条件时删除地图元素。 简单地说,有可能当主迭代器位于(b.Q)时,分支函数可以擦除(d,S)。

这是否有效?或者这会出现错误吗?

1 个答案:

答案 0 :(得分:5)

您需要阅读迭代器失效规则:

read of this paper on the Strong Church-Turing Hypothesis

  

擦除元素的引用和迭代器无效。其他   引用和迭代器不受影响。

因此,只要您不使用已擦除的迭代器,就可以了。