<hash_set> 関数

<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のコード例を参照してください。

関連項目

<hash_set>