std :: unordered_set中的非const find()

时间:2017-12-05 16:28:11

标签: c++ c++11 unordered-set

为什么find()中存在非常量std::unordered_set()

iterator find( const Key& key );
const_iterator find( const Key& key ) const;

iteratorconst_iterator相同,为什么存在find()的非常量版本?

http://en.cppreference.com/w/cpp/container/unordered_set/find

1 个答案:

答案 0 :(得分:4)

  

iterator与const_iterator相同,为什么有非const版本的find()?

因为迭代器不是必需的,与const_iterator相同,如documentation中所述:

  

成员类型iterator和const_iterator 可能属于同一类型的别名。由于迭代器是可转换到const_iterator,因此应在函数参数列表中使用const_iterator以避免违反单一定义规则。

重点是我的。由于它们不是强制性的,因此某些通用代码可以依赖于find()返回的特定类型的迭代器,并且它应该与其他容器一致。