同時処理が安全な修飾子
このセクションのすべてのメンバー関数は、コンテナーをトラバースしながら、同時にルックアップ・メソッドを実行できます。
要素の配置
template <typename...Args> std::pair<iterator, bool> emplace( Args&&... args );
args
からインプレースで構築された要素をコンテナーに挿入しようとします。戻り値:
std::pair<iterator, bool>
のiterator
は、挿入された要素、または等しいキーを持つ既存の要素を指します。挿入が行われた場合、ブール値はtrue
それ以外はfalse
です。要件:
value_type
タイプは、[container.requirements] ISO C++ 標準のEmplaceConstructible
要件を満たしている必要があります。
template <typename...Args> iterator emplace_hint( const_iterator hint, Args&&... args );
args
からインプレースで構築された要素をコンテナーに挿入しようとします。オプションで、ノードを配置する場所の候補として
hint
パラメーターを指定できます。戻り値: 挿入された要素、または同じキーを持つ既存の要素への
iterator
を返します。要件:
value_type
タイプは、[container.requirements] ISO C++ 標準のEmplaceConstructible
要件を満たしている必要があります。
値を挿入
std::pair<iterator, bool> insert( const value_type& value );コンテナーに
value
の挿入を試みます。戻り値:
std::pair<iterator, bool>
のiterator
は、挿入された要素、または等しいキーを持つ既存の要素を指します。挿入が行われた場合、ブール値はtrue
それ以外はfalse
です。要件:
value_type
タイプは、[container.requirements] ISO C++ 標準のCopyInsertable
要件を満たしている必要があります。
iterator insert( const_iterator hint, const value_type& value );コンテナーに
value
の挿入を試みます。オプションで、要素を配置する場所の候補として
hint
パラメーターを指定できます。戻り値: 挿入された要素、または同じキーを持つ既存の要素への
iterator
を返します。要件:
value_type
タイプは、[container.requirements] ISO C++ 標準のCopyInsertable
要件を満たしている必要があります。
template <typename P> std::pair<iterator, bool> insert( P&& value );
emplace(std::forward<P>(value))
と等価です。このオーバーロードは、
std::is_constructible<value_type, P&&>::value
がtrue
の場合にのみオーバーロードの解決に参加します。
template <typename P> iterator insert( const_iterator hint, P&& value );
emplace_hint(hint, std::forward<P>(value))
と等価です。このオーバーロードは、
std::is_constructible<value_type, P&&>::value
がtrue
の場合にのみオーバーロードの解決に参加します。
std::pair<iterator, bool> insert( value_type&& value );ムーブ・セマンティクスを使用して、コンテナーに
value
の挿入を試みます。
value
は有効のままですが、未指定の状態となります。戻り値:
std::pair<iterator, bool>
のiterator
は、挿入された要素、または等しいキーを持つ既存の要素を指します。挿入が行われた場合、ブール値はtrue
それ以外はfalse
です。要件:
value_type
タイプは、[container.requirements] ISO C++ 標準のMoveInsertable
要件を満たしている必要があります。
iterator insert( const_iterator hint, value_type&& other );ムーブ・セマンティクスを使用して、コンテナーに
value
の挿入を試みます。オプションで、要素を配置する場所の候補として
hint
パラメーターを指定できます。
value
は有効のままですが、未指定の状態となります。戻り値: 挿入された要素、または同じキーを持つ既存の要素への
iterator
を返します。要件:
value_type
タイプは、[container.requirements] ISO C++ 標準のMoveInsertable
要件を満たしている必要があります。
要素のシーケンスを挿入
template <typename InputIterator> void insert( InputIterator first, InputIterator last );半開区間l
[first, last)
からすべての項目をコンテナーに挿入しようとします。半開区間
[first, last)
に同じキーを持つ複数の要素が含まれている場合、どの要素が挿入されるかは未指定です。要件:
InputIterator
タイプは、[input.iterators]
ISO C++ 標準の InputIterator 要件を満たしている必要があります。
void insert( std::initializer_list<value_type> init );
insert(init.begin(), init.end())
と等価です。
ノードを挿入
std::pair<iterator, bool> insert( node_type&& nh );ノードハンドル
nh
が空の場合は何も行いません。それ以外は、
nh
が所有するノードをコンテナーに挿入することを試みます。挿入に失敗すると、ノードハンドル
nh
はノードの所有権を維持します。それ以外は、
nh
は空の状態になります。
value_type
のコンストラクターのコピーおよび移動は行われません。
nh
が空ではなく、get_allocator() != nh.get_allocator()
である場合の動作は未定義です。戻り値:
std::pair<iterator, bool>
のiterator
は、挿入された要素、またはnh.key()
と同等の既存の要素を指します。挿入が行われた場合、ブール値はtrue
それ以外はfalse
です。
iterator insert( const_iterator hint, node_type&& nh );ノードハンドル
nh
が空の場合は何も行いません。それ以外は、
nh
が所有するノードをコンテナーに挿入することを試みます。オプションで、ノードを配置する場所の候補として
hint
パラメーターを指定できます。挿入に失敗すると、ノードハンドル
nh
はノードの所有権を維持します。それ以外は、
nh
は空の状態になります。
value_type
のコンストラクターのコピーおよび移動は行われません。
nh
が空ではなく、get_allocator() != nh.get_allocator()
である場合の動作は未定義です。戻り値: 挿入された要素、または
nh.key()
に等しい既存の要素への iterator を返します。。
コンテナーをマージ
template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_map<Key, T, SrcHash, SrcKeyEqual, Allocator>& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_map<Key, T, SrcHash, SrcKeyEqual, Allocator>&& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_multimap<Key, T, SrcHash, SrcKeyEqual, Allocator>& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_multimap<Key, T, SrcHash, SrcKeyEqual, Allocator>&& source );コンテナーにキーが存在しない要素を
source
から転送します。等しいキーを持つ複数の要素が含まれているコンテナーとマージする場合、どの要素が転送されるかは未指定です。
value_type
のコンストラクターのコピーおよび移動は行われません。
get_allocator() != source.get_allocator()
である場合、動作は未定義です。