【发布时间】:2019-01-20 09:11:33
【问题描述】:
我有两个 std::maps:
std::map<int,int> map1;
std::map<int,int> map2;
我需要一个向后迭代,另一个向前迭代(因为这是数据访问的模式)。在迭代时,我希望能够擦除元素继续迭代。
我想用同样的方法。
我已经看到使用模板展示如何进行双向迭代的示例,但没有演示擦除元素(这很重要,因为 erase() 仅适用于前向迭代器):
Iterating over a container bidirectionally
我已经看到了 reverse_iterator 示例,它们可以擦除,但它们不是双向的:
How to call erase with a reverse iterator using a for loop
但我想双向迭代并擦除?
【问题讨论】:
-
如果只给定一对迭代器,你打算如何从容器中擦除元素?
-
@JonathanWakely 通过传入容器更新的问题来反映。
-
为什么
erase不能使用反向迭代器? -
为什么要擦除
print方法中的元素?也许不是最好的例子;)另外:你想删除哪些元素? -
@user997112 向前迭代的速度不取决于您弄错的排序标准