次の方法で共有


hash_set::hash_set

[!メモ]

この API は、互換性のために残されています。代わりに unordered_set クラスです。

を構築します hash_set 空の場合、または他に、hash_setの全体または一部のコピーである。

hash_set( );
explicit hash_set(
   const Traits& _Comp
);
hash_set(
   const Traits& _Comp,
   const Allocator& _Al
);
hash_set(
   const hash_set<Key, Traits, Allocator>& _Right
);
template<class InputIterator>
   hash_set(
      InputIterator _First,
      InputIterator _Last
   );
template<class InputIterator>
   hash_set(
      InputIterator _First,
      InputIterator _Last,
      const Traits& _Comp
   );
template<class InputIterator>
   hash_set(
      InputIterator _First,
      InputIterator _Last,
      const Traits& _Comp,
      const Allocator& _Al
   );
hash_set(
   hash_set&& _Right
);

パラメーター

パラメーター

説明

_Al

Allocatorに既定で hash_set でこのオブジェクトに使用するストレージのアロケーター クラス。

_Comp

hash_setの要素を並べ替えに使用される hash_compareに既定で const Traits 型の比較関数。

_Right

構築された hash_set がコピーであることです hash_set

_First

コピーする要素範囲内の先頭の要素の位置。

_Last

コピーする要素範囲を超える最初の要素の位置。

解説

すべてのコンストラクターは hash_set のメモリの記憶域を管理する hash_set::get_allocatorを呼び出して後で、アロケーター オブジェクトの種類を格納します。アロケーターのパラメーターは、代替アロケーターを置き換えるために使用されるクラスの宣言とプリプロセッサ マクロに切り捨てられます。

すべてのコンストラクターは、のhash_setsを初期化します。

すべてのコンストラクターは hash_set のキーの間の順序を確立するために使用される hash_set::key_compを呼び出して後で、型 Traits 関数オブジェクトを格納します。Traits の詳細に hash_set Class のトピックを参照してください。

明示的に使用されるアロケーターの型 (_Al) を指定する次の3種類のコンストラクターは、空の初期 hash_setを指定し、2番目の要素と番目の順序の確立に使用する比較関数 (_Comp) の型を指定します。Word explicit キーは、特定の種類の自動型変換を抑制します。

4つ目のコンストラクターは、hash_set_Rightのコピーを指定します。

最後の3のコンストラクターは、アロケーター クラスの特性との比較関数の型の指定を大きくするexplicitnessの hash_set の範囲[_First、_Last) をコピーします。

最後のコンストラクターは hash_set_Rightを実行します。

hash_set コンテナー要素の実際の順序は、ハッシュ テーブルのハッシュ関数、関数、および命令の現在のサイズによって単独で命令の関数によって定義された定数のコンテナーであるため、決まり、一般的に、予測できません。

使用例

// hash_set_hash_set.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_set <int>::iterator hs1_Iter, hs3_Iter, hs4_Iter,
      hs5_Iter, hs6_Iter, hs7_Iter;
   hash_set <int, hash_compare <int, greater<int> > >::iterator
      hs2_Iter;

   // Create an empty hash_set hs0 of key type integer
   hash_set <int> hs0;

   // Create an empty hash_set hs1 with the key comparison
   // function of less than, then insert 4 elements
   hash_set <int, hash_compare <int, less<int> > > hs1;
   hs1.insert( 10 );
   hs1.insert( 20 );
   hs1.insert( 30 );
   hs1.insert( 40 );

   // Create an empty hash_set hs2 with the key comparison
   // function of geater than, then insert 2 elements
   hash_set <int, hash_compare <int, greater<int> > > hs2;
   hs2.insert(10);
   hs2.insert(20);

   // Create a hash_set hs3 with the 
   // allocator of hash_set hs1
   hash_set <int>::allocator_type hs1_Alloc;
   hs1_Alloc = hs1.get_allocator( );
   hash_set <int> hs3( hash_compare <int, less<int> >( ),
      hs1_Alloc );
   hs3.insert( 30 );

   // Create a copy, hash_set hs4, of hash_set hs1
   hash_set <int> hs4( hs1 );

   // Create a hash_set hs5 by copying the range hs1[_First, _Last)
   hash_set <int>::const_iterator hs1_bcIter, hs1_ecIter;
   hs1_bcIter = hs1.begin( );
   hs1_ecIter = hs1.begin( );
   hs1_ecIter++;
   hs1_ecIter++;
   hash_set <int> hs5( hs1_bcIter, hs1_ecIter );

   // Create a hash_set hs6 by copying the range hs4[_First, _Last)
   // and with the allocator of hash_set hs2
   hash_set <int>::allocator_type hs2_Alloc;
   hs2_Alloc = hs2.get_allocator( );
   hash_set <int> hs6( hs4.begin( ), ++hs4.begin( ), 
      less<int>( ), hs2_Alloc );

   cout << "hs1 = ";
   for ( hs1_Iter = hs1.begin( ); hs1_Iter != hs1.end( );
         hs1_Iter++ )
      cout << *hs1_Iter << " ";
   cout << endl;
   
   cout << "hs2 = " ;
   for ( hs2_Iter = hs2.begin( ); hs2_Iter != hs2.end( );
         hs2_Iter++ )
      cout << *hs2_Iter << " ";
   cout << endl;

   cout << "hs3 = ";
   for ( hs3_Iter = hs3.begin( ); hs3_Iter != hs3.end( );
         hs3_Iter++ )
      cout << *hs3_Iter << " ";
   cout << endl;

   cout << "hs4 = ";
   for ( hs4_Iter = hs4.begin( ); hs4_Iter != hs4.end( );
         hs4_Iter++ )
      cout << *hs4_Iter << " ";
   cout << endl;

   cout << "hs5 = ";
   for ( hs5_Iter = hs5.begin( ); hs5_Iter != hs5.end( );
         hs5_Iter++ )
      cout << *hs5_Iter << " ";
   cout << endl;

   cout << "hs6 = ";
   for ( hs6_Iter = hs6.begin( ); hs6_Iter != hs6.end( );
         hs6_Iter++ )
      cout << *hs6_Iter << " ";
   cout << endl;

    // Create a copy, hash_set hs7, of hash_set hs1 by moving
    hash_set <int, hash_compare <int, less<int> > >
        hs7(move(hs1);
    cout << "hs7 =";
    for (hs7_Iter = hs7.begin(); hs7_Iter != hs7.end(); hs7_Iter++)
        cout << " " << hs7_Iter -> second;
    cout << endl;
}

出力

hs1 = 40 10 20 30 
hs2 = 10 20 
hs3 = 30 
hs4 = 40 10 20 30 
hs5 = 40 10 
hs6 = 40 
hs7 = 40 10 20 30 

必要条件

ヘッダー: <hash_set>

名前空間: のstdext

参照

関連項目

hash_set Class

標準テンプレート ライブラリ