我一直在比较 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/