<hash_set> ヘッダーには、次の関数が用意されています。
入れ替える
注
この API は、互換性のために残されています。 別の方法は <unordered_set>です。
このヘッダーは、MSVC ビルド ツール 14.51 で削除されました。
2 つの hash_set の要素を交換します。
void swap(
hash_set <Key, Traits, Allocator>& left,
hash_set <Key, Traits, Allocator>& right);
パラメーター
右
交換する要素を提供する hash_set (hash_set left の要素と要素を交換する hash_set)。
left
要素が hash_set right の要素と交換される hash_set。
解説
swap テンプレート関数は、コンテナー クラス hash_set に特化したアルゴリズムであり、メンバー関数 left.swap(right) を実行します。 これは、コンパイラによる関数テンプレートの部分的な順序付けのインスタンスです。 テンプレートと関数呼び出しの照合が一意にならないようにテンプレート関数がオーバーロードされた場合、コンパイラは、最も特化したバージョンのテンプレート関数を選択します。 テンプレート関数の一般的なバージョン
template <class T> void swap(T>, T>)
は、algorithm クラスにあり、代入によって機能し、処理は低速です。 各コンテナー内の特化バージョンのほうが、コンテナー クラスの内部表現で使用できるため大幅に高速になります。
例
のテンプレート バージョンの使用例については、メンバー クラス swap のコード例をご覧ください。
swap (hash_multiset)
注
この API は、互換性のために残されています。 代わりに、unordered_set クラスを使用してください。
2 つの hash_multiset の要素を交換します。
void swap(hash_multiset <Key, Traits, Allocator>& left, hash_multiset <Key, Traits, Allocator>& right);
パラメーター
right
スワップする要素を提供するhash_multiset、またはhash_multiset leftの要素と交換する要素を持つhash_multiset。
left
hash_multiset rightの要素と交換する要素を持つhash_multiset。
解説
swap テンプレート関数は、コンテナー クラス hash_multiset に特化したアルゴリズムであり、メンバー関数 left.swap(right) を実行します。 この関数は、コンパイラが関数テンプレートの部分的な順序付けを使用する方法を示しています。 テンプレート関数がオーバーロードされ、テンプレートと関数呼び出しの一致が一意にならないように、コンパイラはテンプレート関数の最も特殊なバージョンを選択します。 アルゴリズム クラスに template <class T> void swap(T&, T&) テンプレート関数の一般的なバージョンは割り当てによって動作し、処理が遅くなります。 各コンテナーの特殊なバージョンは、コンテナー クラスの内部表現で機能するため、はるかに高速です。
例
swapのテンプレート バージョンを使用する例については、メンバー クラス hash_multiset::swapのコード例を参照してください。