実際にチェックするのは、出現回数ではなく、contains() ですよね? 重複も許可されていないので、count() よりも contains() の方が適切な名前ではないでしょうか?
3 に答える
ポリモーフィズムの優れた側面の 1 つは、同じ API で異なるクラスを処理できることであるため、他のコンテナー クラスとの一貫性を保つためです。
実際にはカウントを返します。セットのカウントは 0 または 1 のみであるという事実は、その側面を変更しません。
これは、同時に「値」ごとに 2 つのものしか許可しないコレクション オブジェクトと基本的に違いはありません。その場合、0、1、または 2 のカウントを返しますが、セットと同じようにカウントのままです。
これを必要とする標準の関連部分は、連想コンテナ、、およびC++11 23.2.4
について述べています。表 102 には、「通常の」コンテナの要件に加えて、これらの連想コンテナの要件が含まれています。set
multiset
map
multimap
count
size_type a.count(k)
- に相当するキーを持つ要素の数を返しますk
。複雑さはlog(a.size()) + a.count(k)
.
すべての連想コンテナは、§23.2.4/8 表 102 - 連想コンテナの要件に記載されている要件を満たさなければなりません。a.count(k)
これらの 1 つは、次に実装することです。
k に相当するキーを持つ要素の数を返します
その理由は、すべての連想コンテナ間で一貫したインターフェースを持つためです。たとえば、この統一性は、任意の連想コンテナーで動作する必要がある汎用関数テンプレートを作成する場合に非常に重要になります。
これは、一致する要素の数を返すコンテナの標準操作です。リストのようなものでは、これは完全に理にかなっています。セットでは、要素が 1 回しか出現しないためcount
、1 より大きい値を返すことはできません。