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

C++ 为什么map.erase返回迭代器?,c++,stdmap,erase,C++,Stdmap,Erase,我想删除std::map从beginIt到endIt的元素erase函数将迭代器返回到最后删除的元素后面的元素。不是结束了吗?为什么擦除返回迭代器 auto it = m_map.erase(beginIt, endIt); 我相信这是由于试图统一标准容器类型的函数调用。例如,在 STD::vector < /C> >返回迭代器与EndID//Cuth>>P>不一样,它是C++标准库对所有容器采用的一个有用的特性。 一个很好的用途是删除受约束的一组元素,并遍历整个容器。显然,从容器中删除某些内

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

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

我相信这是由于试图统一标准容器类型的函数调用。例如,在<代码> STD::vector < /C> >返回迭代器与EndID//Cuth>

>P>不一样,它是C++标准库对所有容器采用的一个有用的特性。


一个很好的用途是删除受约束的一组元素,并遍历整个容器。显然,从容器中删除某些内容会使传递的迭代器无效。返回下一个候选迭代器很有用。

std::map where(it!=endIt)是否有这种情况?为什么这样说
std::vector::erase
返回最后一个删除元素后面的迭代器,与
std::map::erase
@SergeyA
std::map::erase(beg,end)
返回
end
std::vector::erase(beg,end)
将迭代器返回到元素
end
所指向的位置,而不是
end
本身。@Revolver\u Ocelot,我误解了答案。只有单参数函数和某些容器的两个参数始终是正确的。地图上的两个参数
erase
不会使地图上的范围擦除无效
endIt
它对地图上的范围擦除在任何方面都没有用处。@SergeyA,除非您想执行诸如擦除大于/小于某个值的所有键之类的操作。@Barry,不确定您的意思是什么
erase()
需要键或迭代器。要执行您所说的操作,首先需要使用
下限
,然后再使用结果迭代器。@SergeyA请停止评论。最后一个也没什么意义。当然,迭代器并不是凭空变戏法的。