<set>ヘッダは、集合を表す連想コンテナ、setとmultisetを定義する。
setはキーの重複を許可しないが、multisetはキーの重複を許可する。
連想コンテナは特にそれらキーによる要素アクセスが効率的になるよう設計されたコンテナである(要素への相対位置または絶対位置によるアクセスが効率的であるシーケンシャルコンテナとは異なる)。
内部的には、set 内の要素は、コンテナの構築時に設定された狭義の弱順序基準に従って小さいものから大きいものへとソートされる。
setとmultisetは一般的に、二分木として実装される。従って、連想コンテナである setやmultiset の主な特性は以下の通りである。
- ユニークな要素のキー:互いに等しい二つのキーを持つ要素が
setに格納されることは無い。複数の等しいキーを許す同様の連想コンテナはmultisetである。 - 要素の値はキーと値の
pair型である。 - 要素は常に狭義の弱順序に従う。
- 挿入操作はイテレータや要素の参照に影響を与えない。
このコンテナクラスは、双方向イテレータをサポートする。
このヘッダでは、以下の標準ヘッダをインクルードする:
<initializer_list>(C++11)<compare>(C++20)
| 名前 | 説明 | 対応バージョン |
|---|---|---|
set |
キーの重複を許可しない集合(class template) | |
multiset |
キーの重複を許可する集合(class template) |