<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) |