5

どうやら、厳密にブール値ではないものunordered_set::eraseunordered_set::count返します(論理的には、実際の型については話していません)。

リンクされたページは、消去の3番目のバージョンを読み取ります。

size_type erase( const key_type& key );

キー値キーを持つ要素を削除します

これには、特定のキーを持つ要素が複数存在する可能性があることを示唆するトーンがあります。これについては明確に述べていませんが、多くのように聞こえます。
さて、セットのポイントは、順序付けられていないものであっても、各要素を1回持つことです。

標準ライブラリはbool型の存在を認識し、それをのようなブール値に使用しますunordered_set::empty()それで、上記の場合に戻ることのポイントは何size_typeですか?ハッシュの衝突にもかかわらず、コンテナは異なるキーを持つ要素を区別する必要がありますよね?それでも信頼できますか?

4

2 に答える 2

6

a.erase(k)size_typekと同等のキーを持つすべての要素を消去します。消去された要素の数を返します。

b.count(k)size_typekと同等のキーを持つ要素の数を返します。

これは、順序付けされていない連想コンテナの要件[23.2.5]が原因です。

于 2012-08-08T07:08:38.480 に答える
1

おそらく、からの文言を再利用できるようにするためですunordered_multiset。パフォーマンスの面を除いて、ハッシュの衝突について心配する必要はありません。すべての要素が衝突しても、コンテナは正しいです。たとえそのようなことが非常に遅くても。

于 2012-08-08T07:08:24.127 に答える