名前空間
変種
操作

std::set

提供: cppreference.com
< cpp‎ | container
ヘッダ <set> で定義
template<

    class Key,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<Key>

> class set;
(1)
namespace pmr {

    template <class Key, class Compare = std::less<Key>>
    using set = std::set<Key, Compare, std::pmr::polymorphic_allocator<Key>>;

}
(2) (C++17およびそれ以降)

std::setKey 型の一意なオブジェクトのソートされた集合を格納する連想コンテナです。 ソートはキー比較関数 Compare を使用して行われます。 検索、削除、挿入の操作の計算量は対数時間です。 set は通常赤黒木として実装されます。

標準ライブラリが Compare 要件を使用する場所ではすべて、一意性は同等関係を使用して決定されます。 不正確な言葉で言うと、2つのオブジェクト ab は、どちらがどちらより小さいわけでもない (!comp(a, b) && !comp(b, a)) 場合に等しいとみなされます。

std::setContainer, AllocatorAwareContainer, AssociativeContainer, ReversibleContainer の要件を満たします。

目次

[編集] メンバ型

メンバ型 定義
key_type Key [edit]
value_type Key [edit]
size_type 符号なし整数型 (通常 std::size_t) [edit]
difference_type 符号付き整数型 (通常 std::ptrdiff_t) [edit]
key_compare Compare [edit]
value_compare Compare [edit]
allocator_type Allocator [edit]
reference
Allocator::reference (C++11以前)
value_type& (C++11およびそれ以降)
[edit]
const_reference
Allocator::const_reference (C++11以前)
const value_type& (C++11およびそれ以降)
[edit]
pointer
Allocator::pointer (C++11以前)
std::allocator_traits<Allocator>::pointer (C++11およびそれ以降)
[edit]
const_pointer
Allocator::const_pointer (C++11以前)
std::allocator_traits<Allocator>::const_pointer (C++11およびそれ以降)
[edit]
iterator const BidirectionalIterator [edit]
const_iterator const BidirectionalIterator [edit]
reverse_iterator std::reverse_iterator<iterator> [edit]
const_reverse_iterator std::reverse_iterator<const_iterator> [edit]
node_type
(C++17およびそれ以降)
コンテナノードを表すノードハンドルの特殊化 [edit]
insert_return_type
(C++17およびそれ以降)
node_type を挿入した結果を表す型。 テンプレート引数 iterator および node_type でインスタンス化された
template <class Iterator, class NodeType> struct /*unspecified*/ {
    Iterator position;
    bool     inserted;
    NodeType node;
};
の特殊化 [edit]

[編集] メンバ関数

set を構築します
(パブリックメンバ関数) [edit]
set を破棄します
(パブリックメンバ関数) [edit]
コンテナに値を代入します
(パブリックメンバ関数) [edit]
関連付けられているアロケータを返します
(パブリックメンバ関数) [edit]
イテレータ
先頭を指すイテレータを返します
(パブリックメンバ関数) [edit]
終端を指すイテレータを返します
(パブリックメンバ関数) [edit]
先頭を指す逆イテレータを返します
(パブリックメンバ関数) [edit]
終端を指す逆イテレータを返します
(パブリックメンバ関数) [edit]
容量
コンテナが空かどうか調べます
(パブリックメンバ関数) [edit]
要素数を返します
(パブリックメンバ関数) [edit]
可能な最大の要素数を返します
(パブリックメンバ関数) [edit]
変更
すべての要素を削除します
(パブリックメンバ関数) [edit]
要素またはノード (C++17およびそれ以降)を挿入します
(パブリックメンバ関数) [edit]
(C++11)
要素をその場で構築します
(パブリックメンバ関数) [edit]
ヒントを使用して要素をその場で構築します
(パブリックメンバ関数) [edit]
要素を削除します
(パブリックメンバ関数) [edit]
内容を入れ替えます
(パブリックメンバ関数) [edit]
(C++17)
コンテナからノードを抽出します
(パブリックメンバ関数) [edit]
(C++17)
他のコンテナからノードを接合します
(パブリックメンバ関数) [edit]
検索
指定されたキーと一致する要素の数を返します
(パブリックメンバ関数) [edit]
指定されたキーを持つ要素を探します
(パブリックメンバ関数) [edit]
(C++20)
コンテナが指定されたキーを持つ要素を格納しているかどうか調べます
(パブリックメンバ関数) [edit]
指定されたキーに一致する要素の範囲を返します
(パブリックメンバ関数) [edit]
指定されたキーより小さくない最初の要素を指すイテレータを返します
(パブリックメンバ関数) [edit]
指定されたキーより大きい最初の要素を指すイテレータを返します
(パブリックメンバ関数) [edit]
観察
キーを比較する関数を返します
(パブリックメンバ関数) [edit]
value_type 型のオブジェクト内のキーを比較する関数を返します
(パブリックメンバ関数) [edit]

[編集] 非メンバ関数

set 内の値を辞書的に比較します
(関数テンプレート) [edit]
std::swap アルゴリズムの特殊化
(関数テンプレート) [edit]

[編集] 推定ガイド(C++17およびそれ以降)

[編集] ノート

メンバ型 iterator および const_iterator は同じ型のエイリアスである場合があります。 iteratorconst_iterator に変換可能なので、 One Definition Rule 違反回避のため関数の引数リストには const_iterator を使用するべきです。

[編集] 欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
LWG 103 C++98 iterator allows modification of keys iterator made constant