私は頻繁に使用してstd::set<int>
おり、そのようなセットに数値が含まれているかどうかを確認する必要があるだけです。
私は書くのが自然だと思います:
if (myset.contains(number))
...
しかし、contains
メンバーがいないため、面倒なことを書く必要があります。
if (myset.find(number) != myset.end())
..
またはそれほど明白ではない:
if (myset.count(element) > 0)
..
この設計決定の理由はありますか?
count()
アプローチのもう1つの(より基本的な)問題は、必要以上に多くの作業countains()
を実行することです。
contains()
返すbool
でしょう要素がコレクション内にある場合についての貴重な情報を失います。find()
は、その情報をイテレータの形式で保存して返すため、STLのような一般的なライブラリに適しています。(ただし、a bool contains()
があまり便利ではなく、必要でもないというわけではありません。)
contains(set, element)
セットのパブリックインターフェイスを使用して無料の関数を記述するのは簡単です。したがって、セットのインターフェースは機能的に完全です。便利なメソッドを追加すると、C ++の方法ではない追加の機能を有効にすることなく、インターフェイスが増えるだけです。