c++ - multimap::erase() 标准行为?

标签 c++ iterator std multimap

我一直在比较 multimap::erase 函数的文档。查看 Josuttis 和 cplusplus.com 后,看起来好像有三个重载:

void erase(iterator position);
size_type erase(const key_type& x);
void erase(iterator first, iterator last);

然而,MSDN documentaion似乎暗示了三种略有不同的重载:

iterator erase(iterator where);
iterator erase(iterator first, iterator last);
bool erase(key_type key)

为什么会有差异?我是不是有点慢了,看错了文档,或者是标准发生了变化,我只是在看过时的文档?

最佳答案

正确的重载是(来自 http://en.cppreference.com/w/cpp/container/multimap/erase ):

void erase( iterator position );                                    (until C++11) 
iterator erase( const_iterator position );                          (since C++11)

void erase( iterator first, iterator last );                        (until C++11) 
iterator erase( const_iterator first, const_iterator last );        (since C++11)

size_type erase( const key_type& key );

cplusplus.com 文档已过时; Microsoft 文档完全不正确(重载可能是从 map 文档中错误复制的);后面确实说第三种形式返回被移除元素的数量,所以显然不能返回bool

关于c++ - multimap::erase() 标准行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11310252/

相关文章:

c - 从文件中的单词中删除字母 C - 有问题的符号

c++ - 混用 std: :'s and boost::' s::bind 和::function 会导致问题吗?

c++ - Cocos2d-x 3.2 EventListener 在子 Sprite 中不起作用

c++ - 为什么在特定的 Visual Studio 2008 项目中错误地添加了 double ?

java - 如何在 Java 中将迭代器实现为类的属性

c++ - 在 vector 上使用算法中的查找函数

c++:查找程序中的最大容器

c++ - 带有 boost asio 的 TIME_WAIT

c++ - 在 C++ 中组合来自多个容器的输出

c - fork 二叉树, fork 功能问题