名前空間
変種
操作

std::unordered_set

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

    class Key,
    class Hash = std::hash<Key>,
    class KeyEqual = std::equal_to<Key>,
    class Allocator = std::allocator<Key>

> class unordered_set;
(1) (C++11およびそれ以降)
namespace pmr {

    template <class Key,
              class Hash = std::hash<Key>,
              class Pred = std::equal_to<Key>>
    using unordered_set = std::unordered_set<Key, Hash, Pred,
                                             std::pmr::polymorphic_allocator<Key>>;

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

unordered set は Key 型の一意なオブジェクトの集合を格納する連想コンテナです。 検索、挿入、削除は平均定数時間の計算量です。

内部的には、要素は特定の順序にソートされず、複数のバケットにまとめられます。 要素がどのバケットに配置されるかはもっぱらその値のハッシュに依存します。 これにより、いったんハッシュが計算されればその要素が配置される正確なバケットを参照できるため、個々の要素への高速なアクセスが可能になります。

コンテナの要素は (非 const なイテレータであっても) 変更できません。 変更は要素のハッシュを変更し、コンテナを破損させるためです。

std::unordered_setContainer, AllocatorAwareContainer, UnorderedAssociativeContainer の要件を満たします。

目次

[編集] メンバ型

メンバ型 定義
key_type Key [edit]
value_type Key [edit]
size_type 符号なし整数型 (通常 std::size_t) [edit]
difference_type 符号付き整数型 (通常 std::ptrdiff_t) [edit]
hasher Hash [edit]
key_equal KeyEqual [edit]
allocator_type Allocator [edit]
reference value_type& [edit]
const_reference const value_type& [edit]
pointer std::allocator_traits<Allocator>::pointer [edit]
const_pointer std::allocator_traits<Allocator>::const_pointer [edit]
iterator const ForwardIterator [edit]
const_iterator const ForwardIterator [edit]
local_iterator カテゴリおよび value, difference, pointer, reference の各型が iterator と同じイテレータ型。 このイテレータはバケット内をイテレートするために使用することができますが、別のバケットには移動できません[edit]
const_local_iterator カテゴリおよび value, difference, pointer, reference の各型が 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]

[編集] メンバ関数

unordered_set を構築します
(パブリックメンバ関数) [edit]
unordered_set を破棄します
(パブリックメンバ関数) [edit]
コンテナに値を代入します
(パブリックメンバ関数) [edit]
関連付けられているアロケータを返します
(パブリックメンバ関数) [edit]
挿入
先頭を指すイテレータを返します
(パブリックメンバ関数) [edit]
終端を指すイテレータを返します
(パブリックメンバ関数) [edit]
容量
コンテナが空かどうか調べます
(パブリックメンバ関数) [edit]
要素数を返します
(パブリックメンバ関数) [edit]
可能な最大の要素数を返します
(パブリックメンバ関数) [edit]
変更
すべての要素を削除します
(パブリックメンバ関数) [edit]
要素またはノード (C++17およびそれ以降)を挿入します
(パブリックメンバ関数) [edit]
要素をその場で構築します
(パブリックメンバ関数) [edit]
ヒントを使用して要素をその場で構築します
(パブリックメンバ関数) [edit]
要素を削除します
(パブリックメンバ関数) [edit]
内容を入れ替えます
(パブリックメンバ関数) [edit]
(C++17)
コンテナからノードを抽出します
(パブリックメンバ関数) [edit]
(C++17)
他のコンテナからノードを接合します
(パブリックメンバ関数) [edit]
検索
指定されたキーと一致する要素の数を返します
(パブリックメンバ関数) [edit]
指定されたキーを持つ要素を探します
(パブリックメンバ関数) [edit]
(C++20)
コンテナが指定されたキーを持つ要素を格納しているかどうか調べます
(パブリックメンバ関数) [edit]
指定されたキーに一致する要素の範囲を返します
(パブリックメンバ関数) [edit]
バケットインタフェース
指定されたバケットの先頭を指すイテレータを返します
(パブリックメンバ関数) [edit]
指定されたバケットの終端を指すイテレータを返します
(パブリックメンバ関数) [edit]
バケットの数を返します
(パブリックメンバ関数) [edit]
バケットの最大数を返します
(パブリックメンバ関数) [edit]
特定のバケットの要素数を返します
(パブリックメンバ関数) [edit]
指定されたキーのためのバケットを返します
(パブリックメンバ関数) [edit]
ハッシュポリシー
バケットあたりの平均要素数を返します
(パブリックメンバ関数) [edit]
バケットあたりの平均要素数の最大値を管理します
(パブリックメンバ関数) [edit]
少なくとも指定された数のバケットを予約します。 これによりハッシュテーブルが再生成されます。
(パブリックメンバ関数) [edit]
少なくとも指定された数の要素のための空間を予約します。 これによりハッシュテーブルが再生成されます。
(パブリックメンバ関数) [edit]
観察
キーをハッシュするために使用される関数を返します
(パブリックメンバ関数) [edit]
キーが等しいかどうかを比較するために使用される関数を返します
(パブリックメンバ関数) [edit]

[編集] 非メンバ関数

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

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

[編集] ノート

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