同時性が安全ではない修飾子
このセクションのすべてのメンバー関数は、シリアルにのみ実行できます。これらのメンバー関数を (同時処理の安全性が保障される) 他のメソッドと同時に実行する場合、動作は未定義です。
クリア
void clear();コンテナーからすべての要素を削除します。
要素を消去
iterator unsafe_erase( const_iterator pos ); iterator unsafe_erase( iterator pos );
pos
が指してい要素をコンテナーから削除します。すべてのイテレーターと削除された要素への参照を無効にします。
戻り値: 削除された要素の次を示す
iterator
を返します。要件: イテレーター
pos
は有効で逆参照可能であり、*this
内の要素を指している必要があります。
size_type unsafe_erase( const key_type& key );要素のキーと同じ
key
が存在する場合、それをコンテナーから削除します。すべてのイテレーターと削除された要素への参照を無効にします。
戻り値: 要素のキーと一致する
key
が存在する場合は1
を、それ以外は0
を返します。
template <typename K> size_type unsafe_erase( const K& key );要素のキーと同じ
key
が存在する場合、それをコンテナーから削除します。すべてのイテレーターと削除された要素への参照を無効にします。
このオーバーロードは、次の条件がすべて満たされる場合にのみ。オーバーロードの解決に参加します。
修飾 ID
hasher::transparent_key_equal
は有効であり、タイプを示します。
std::is_convertible<K, iterator>::value
はfalse
です。
std::is_convertible<K, const_iterator>::value
はfalse
です。戻り値: 要素のキーと一致する
key
が存在する場合は1
を、それ以外は0
を返します。
シーケンスを消去
iterator unsafe_erase( const_iterator first, const_iterator last );コンテナーから半開区間
[first, last)
のすべての要素を削除します。戻り値: 削除された要素の次を示す
iterator
を返します。要件: 半開区間
[first, last)
は、*this
内の有効なサブレンジである必要があります。
ノードを消去
node_type unsafe_extract( iterator pos ); node_type unsafe_extract( const_iterator pos );
pos
が示す要素の所有権をコンテナーからノードハンドルに転送します。
value_type
のコンストラクターのコピーおよび移動は行われません。抽出された要素に対するすべてのテレーターを無効にします。抽出された要素へのポインターと参照は有効なままです。
戻り値: 抽出された要素を所有するノードハンドルを返します。
要件: イテレーター
pos
は有効で逆参照可能であり、*this
内の要素を指している必要があります。
node_type unsafe_extract( const key_type& key );
key
と同等のキーを持つ要素が存在する場合、その要素の所有権をコンテナーからノードハンドルに転送します。
value_type
のコンストラクターのコピーおよび移動は行われません。抽出された要素に対するすべてのテレーターを無効にします。抽出された要素へのポインターと参照は有効なままです。
戻り値: 抽出された要素を所有するノードハンドル、またはキーと同等の
key
を持つ要素が見つからない場合は空のハンドルを返します。
template <typename K> node_type unsafe_extract( const K& key );
key
と同等のキーを持つ要素が存在する場合、その要素の所有権をコンテナーからノードハンドルに転送します。
value_type
のコンストラクターのコピーおよび移動は行われません。抽出された要素に対するすべてのテレーターを無効にします。抽出された要素へのポインターと参照は有効なままです。
このオーバーロードは、次の条件がすべて満たされる場合にのみ。オーバーロードの解決に参加します。
修飾 ID
hasher::transparent_key_equal
は有効であり、タイプを示します。
std::is_convertible<K, iterator>::value
はfalse
です。
std::is_convertible<K, const_iterator>::value
はfalse
です。戻り値: 抽出された要素を所有するノードハンドル、またはキーと同等の
key
を持つ要素が見つからない場合は空のハンドルを返します。
swap
void swap( concurrent_unordered_map& other ) noexcept(/*See below*/);
*this
とother
の内容を入れ替えます。
std::allocator_traits<allocator_type>::propagate_on_container_swap::value
がtrue
の場合、アロケーターを入れ替えます。そうでない場合、
get_allocator() != other.get_allocator()
の動作は未定義です。例外: 具体的に
noexcept
は以下です。noexcept(std::allocator_traits<allocator_type>::is_always_equal::value && std::is_nothrow_swappable<hasher>::value && std::is_nothrow_swappable<key_equal>::value