为什么find()
中存在非常量std::unordered_set()
?
iterator find( const Key& key );
const_iterator find( const Key& key ) const;
iterator
与const_iterator
相同,为什么存在find()
的非常量版本?
http://en.cppreference.com/w/cpp/container/unordered_set/find
答案 0 :(得分:4)
iterator与const_iterator相同,为什么有非const版本的find()?
因为迭代器不是必需的,与const_iterator相同,如documentation中所述:
重点是我的。由于它们不是强制性的,因此某些通用代码可以依赖于成员类型iterator和const_iterator 可能属于同一类型的别名。由于迭代器是可转换到const_iterator,因此应在函数参数列表中使用const_iterator以避免违反单一定义规则。
find()
返回的特定类型的迭代器,并且它应该与其他容器一致。