同時性が安全ではない修飾子
このセクションのすべてのメンバー関数は、シリアルにのみ実行できます。これらのメンバー関数を (同時処理の安全性が保障される) 他のメソッドと同時に実行する場合、動作は未定義です。
クリア
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
