为什么map.erase返回迭代器?

时间:2016-03-24 19:45:53

标签: c++ stdmap erase

我想要从beginIt到endIt擦除std :: map的元素。 erase 函数将迭代器返回到删除的最后一个元素后面的元素。它不是结束吗?擦除为什么返回迭代器?

auto it = m_map.erase(beginIt, endIt);

2 个答案:

答案 0 :(得分:8)

这是C ++标准库对其所有容器采用的有用功能。

特别好用的是当您删除受约束约束的一组元素并且您正在迭代整个容器时。显然,从容器中删除某些内容会使您传递的迭代器无效。返回下一个候选迭代器很有用。

答案 1 :(得分:2)

我认为这是因为尝试统一标准容器类型的函数调用。例如,在endIt中,返回的迭代器与{{1}}

不同