为什么 `std::unordered_map::erase(key_type const&)` return 删除元素的数量?
Why `std::unordered_map::erase(key_type const&)` return number of removed elements?
最近我去使用std::unordered_map::erase
,发现函数有一些重载:
iterator erase( const_iterator pos ); (1) (since C++11)
iterator erase( iterator pos ); (1) (since C++17)
iterator erase( const_iterator first, const_iterator last ); (2) (since C++11)
size_type erase( const key_type& key ); (3) (since C++11)
并且在函数描述中return提到的值:
Return value
1-2) Iterator following the last removed element.
3) Number of elements removed.
最后一个 (3),表示我们可以得到移除元素的数量。这是否意味着可以在地图上使用相同的键?
因为还有 unordered_multimap
几个元素可以有相同的键。返回已擦除元素的数量对于 multimap、multiset、unordered_multimap 和 unordered_multiset 非常有意义。 returning 的元素数量而不仅仅是非多容器的 bool
是一种使 map 和 multimap(等)的公共“接口”尽可能接近的方法以便在某些情况下可以通过模板参数使用。
擦除非多映射或集合(或 unordered_map 或 unordered_set)确实只会 return 0 或 1.
最近我去使用std::unordered_map::erase
,发现函数有一些重载:
iterator erase( const_iterator pos ); (1) (since C++11)
iterator erase( iterator pos ); (1) (since C++17)
iterator erase( const_iterator first, const_iterator last ); (2) (since C++11)
size_type erase( const key_type& key ); (3) (since C++11)
并且在函数描述中return提到的值:
Return value
1-2) Iterator following the last removed element.
3) Number of elements removed.
最后一个 (3),表示我们可以得到移除元素的数量。这是否意味着可以在地图上使用相同的键?
因为还有 unordered_multimap
几个元素可以有相同的键。返回已擦除元素的数量对于 multimap、multiset、unordered_multimap 和 unordered_multiset 非常有意义。 returning 的元素数量而不仅仅是非多容器的 bool
是一种使 map 和 multimap(等)的公共“接口”尽可能接近的方法以便在某些情况下可以通过模板参数使用。
擦除非多映射或集合(或 unordered_map 或 unordered_set)确实只会 return 0 或 1.