2010-12-03 5 views

答えて

14

countは、associative container requirements(1)の一部です。

すべての結合コンテナは、結果が常に0または1であっても、std::setのようにそれをインターフェイスの一部として提供する必要があります。


(1)これは、関連コンテナの概念を説明するSGI STLのドキュメントへのリンクです。 C++標準で定義されているコンセプトはわずかに異なるかもしれませんが、それほど重要ではありません。

+0

うーん...非機能的な目的のための強制要件。彼らはセットのために空のボディでそれを実装できました。 Strange ... – Nav

+2

@Nav: 'std :: set'のために空のボディで実装することはできません。なぜなら、要素がセットに存在するかどうかをテストする必要があるからです。ただし、 'return find(k)!= end()?1:0;')でも 'std :: set :: find'の観点から実装できます。それは無意味ではない。 'std :: set'の場合でも、指定されたキーを持つ要素がコンテナにいくつあるかを示します。 'std :: set'の場合、答えは常に0または1です。 –

+1

インタフェースに共通性を持たせることで、コンテナのいずれかで動作する上位レベルのアルゴリズムを記述しやすくなり、あるコンテナをハードコーディングして別のコンテナを使用するコードを変更しやすくなります。しかし、操作が意味的に類似している場合にのみ意味があります。なぜなら、異種コンテナのインターフェイスを同様にするためにSTLが機能しなくなるからです。 –

関連する問題