2017-12-05 14 views
2

find()の非constはなぜstd::unordered_set()にあるのですか?std :: unordered_setの非const find()

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

iteratorfind()の非constバージョンがある理由は、const_iteratorと同じですか?検索の非constバージョンがある理由

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

+0

@FrançoisAndrieux私はfind()メソッドのfind()*** const ***とfind()/ * no const * /指定子について説明しています。 – vladon

+2

他のすべてのコンテナとの一貫性を保つため。 setキーが不変であっても、これは異なるコンテナで動作するテンプレートの開発を可能にし、コンテナが 'iterator'メンバクラスと適切な' find() 'の適切な定義を提供することを期待します。 –

+0

@vladon私は質問を誤解しました。私はあなたが非constイテレータを得るために 'find'を使う方法を尋ねていると思っていました。 –

答えて

4

イテレータは、const_iteratorのと同じですか()?

documentationで述べたように反復子は、const_iteratorの同じ必須ではないので:

部材型イテレータとconst_iteratorのが同じタイプにエイリアスであってもよいです。反復子はで、const_iteratorに変換可能なであるため、1つの定義ルールの違反を避けるために、const_iteratorを関数パラメータリストで使用する必要があります。

強調は私です。それらが必須ではないので、いくつかの汎用コードは、find()によって返される特定のタイプのイテレータに依存する可能性があり、他のコンテナと一貫している必要があります。

関連する問題