为什么map.erase返回迭代器

Why map.erase returns iterator?

本文关键字:迭代器 返回 erase map 为什么      更新时间:2023-10-16

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

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

C++标准库对其所有容器都采用了一个有用的特性。

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

我认为这是由于试图在标准容器类型之间统一函数调用。例如,在std::vector中,返回的迭代器与endIt 不同