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

Gev*_*yan 5 c++ stdmap erase

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

auto it = m_map.erase(beginIt, endIt);
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 8

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

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

  • 当你喝一杯茶时它也没用.但它在许多情况下仍然有用. (3认同)

kmd*_*eko 2

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