Namespaces
Variants

std:: unordered_multiset

From cppreference.net
ヘッダーで定義 <unordered_set>
template <

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

> class unordered_multiset ;
(1) (C++11以降)
namespace pmr {

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

}
(2) (C++17以降)

std::unordered_multiset は、Key型の一意とは限らないオブジェクトの集合を格納する連想コンテナです。検索、挿入、削除の操作は平均的に定数時間の計算量を持ちます。

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

このコンテナの反復順序は安定である必要はありません(したがって、例えば std::equal を使用して2つの std::unordered_multiset を比較することはできません)。ただし、キーが 等価 と比較される( key_eq() を比較子として等しいと比較される)要素の各グループは、反復順序において連続した部分範囲を形成し、 equal_range() でもアクセス可能です。

std::unordered_multiset Container AllocatorAwareContainer UnorderedAssociativeContainer の要件を満たします。

std::unordered_multisetのすべてのメンバ関数は std::unordered_multiset constexpr です:定数式の評価中に std::unordered_multiset オブジェクトを作成および使用することが可能です。

ただし、 std::unordered_multiset オブジェクト自体は一般的に constexpr にはなりません。なぜなら、動的に割り当てられたストレージは同じ定数式の評価内で解放されなければならないためです。

(C++26以降)

目次

テンプレートパラメータ

メンバー型

定義
key_type Key
value_type Key
size_type 符号なし整数型(通常は std::size_t
difference_type 符号付き整数型(通常は std::ptrdiff_t
hasher Hash
key_equal KeyEqual
allocator_type Allocator
reference value_type &
const_reference const value_type &
pointer std:: allocator_traits < Allocator > :: pointer
const_pointer std:: allocator_traits < Allocator > :: const_pointer
iterator 定数 LegacyForwardIterator および ConstexprIterator (C++26以降) value_type を指すイテレータ
const_iterator LegacyForwardIterator および ConstexprIterator (C++26以降) const value_type を指すイテレータ
local_iterator カテゴリ、値型、差分行、ポインタ型、参照型が iterator と同じイテレータ型。
このイテレータは単一のバケット内を反復処理するために使用できるが、
バケット間を移動することはできない
const_local_iterator カテゴリ、値型、差分行、ポインタ型、参照型が const_iterator と同じイテレータ型。
このイテレータは単一のバケット内を反復処理するために使用できるが、
バケット間を移動することはできない
node_type (C++17以降) コンテナノードを表す node handle の特殊化

メンバー関数

unordered_multiset を構築する
(公開メンバ関数)
unordered_multiset を破棄する
(公開メンバ関数)
コンテナに値を代入する
(公開メンバ関数)
関連付けられたアロケータを返す
(公開メンバ関数)
イテレータ
先頭を指すイテレータを返す
(公開メンバ関数)
終端イテレータを返す
(公開メンバ関数)
容量
コンテナが空かどうかをチェックします
(public member function)
要素数を返す
(公開メンバ関数)
格納可能な最大要素数を返します
(public member function)
修飾子
内容をクリアする
(公開メンバ関数)
要素を挿入する またはノード (C++17以降)
(公開メンバ関数)
要素の範囲を挿入する
(公開メンバ関数)
要素をその場で構築する
(公開メンバ関数)
ヒントを使用して要素をその場で構築する
(公開メンバ関数)
要素を削除する
(公開メンバ関数)
内容を交換する
(公開メンバ関数)
(C++17)
コンテナからノードを抽出する
(公開メンバ関数)
(C++17)
別のコンテナからノードをスプライスする
(公開メンバ関数)
ルックアップ
特定のキーに一致する要素の数を返す
(public member function)
特定のキーを持つ要素を検索
(public member function)
(C++20)
指定されたキーを持つ要素がコンテナに含まれているかどうかをチェックする
(public member function)
指定されたキーに一致する要素の範囲を返す
(公開メンバ関数)
Bucket インターフェース
指定されたバケットの先頭を指すイテレータを返す
(public member function)
指定されたバケットの終端を指すイテレータを返す
(公開メンバ関数)
バケット数を返す
(公開メンバ関数)
バケットの最大数を返す
(公開メンバ関数)
特定のバケット内の要素数を返す
(public member function)
指定されたキーのバケットを返す
(公開メンバ関数)
ハッシュポリシー
バケットあたりの平均要素数を返す
(public member function)
バケットあたりの最大平均要素数を管理する
(公開メンバ関数)
指定された数のバケットを最低限確保し、ハッシュテーブルを再生成する
(公開メンバ関数)
指定された要素数以上の領域を確保し、ハッシュテーブルを再生成する
(公開メンバ関数)
オブザーバー
キーをハッシュするために使用される関数を返します
(公開メンバ関数)
キーの等価性を比較するために使用される関数を返します
(public member function)

非メンバー関数

(C++11) (C++11) (removed in C++20)
unordered_multiset内の値を比較する
(関数テンプレート)
std::swap アルゴリズムを特殊化する
(関数テンプレート)
特定の条件を満たす全ての要素を削除する
(関数テンプレート)

推論ガイド

(C++17以降)

注記

メンバ型 iterator const_iterator は同じ型のエイリアスである可能性があります。これは、これら2つの型をパラメータ型として使用する関数オーバーロードのペアを定義すると、 One Definition Rule に違反する可能性があることを意味します。 iterator const_iterator に変換可能であるため、代わりに const_iterator をパラメータ型とする単一の関数が機能します。

機能テスト マクロ 規格 機能
__cpp_lib_containers_ranges 202202L (C++23) コンテナのためのレンジ構築と挿入
__cpp_lib_constexpr_unordered_set 202502L (C++26) constexpr std::unordered_muliset

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2050 C++11 reference const_reference pointer
および const_pointer の定義は allocator_type に基づいていた
value_type
std::allocator_traits に基づく

関連項目

キーのハッシュによる一意なキーのコレクション
(クラステンプレート)
キーでソートされたキーのコレクション
(クラステンプレート)
コンテナをアダプトしてキーでソートされたキーのコレクションを提供する
(クラステンプレート)