Compartir a través de


hash_set::hash_set

[!NOTA]

Esta API está obsoleta.La alternativa es unordered_set Class.

Construye hash_set que está vacío o que es una copia de todo o parte de algún otro 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
);

Parámetros

Parámetro

Descripción

_Al

La clase del asignador de almacenamiento que se utilizará para este objeto hash_set , que toma como valor predeterminado la Allocator.

_Comp

La función de comparación const Traits tipo utilizado para ordenar los elementos hash_set, que toma como valor predeterminado la hash_compare.

_Right

hash_set cuyo hash_set construido es ser una copia.

_First

La posición del primer elemento del intervalo de elementos que se copiarán.

_Last

La posición del primer elemento más allá del intervalo de elementos que se copiarán.

Comentarios

Todos los constructores almacenan un tipo de objeto del asignador que administra el almacenamiento de memoria para hash_set y pueda devolver más adelante llamando a hash_set::get_allocator.El parámetro de asignador se omite en las declaraciones de clase y las macros de preprocesamiento utilizadas para sustituir asignadores alternativos.

Todos los constructores inicializan los hash_sets.

Todos los constructores almacenan un objeto de función Traits tipo que se utiliza para establecer una orden entre las teclas hash_set y pueda devolver más adelante llamando a hash_set::key_comp.Para obtener más información sobre Traits vea el tema hash_set Class .

Los tres constructores siguientes especifican hash_setinicial vacío, el segundo especificando el tipo de función de comparación (_Comp) que se utilizará en el establecimiento del orden de los elementos y el tercero explícitamente que especifica el tipo del asignador (_Al) que se va a utilizar.La palabra clave explicit suprime ciertos tipos de conversión automática.

El cuarto constructor especifica una copia hash_set_Right.

Los tres constructores pasados copian el intervalo [_First, _Last) hash_set con la mejora de explicidad en especificar el tipo de función de comparación de la clase Traits y el asignador.

El constructor último mueve hash_set_Right.

El orden real de elementos en un contenedor hash_set depende de la función hash, la función de ordenación y el tamaño actual de la tabla hash y no puede, para predecir normalmente como podría con el contenedor set, donde se ha determinado por la función que ordenaba únicamente.

Ejemplo

// 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;
}

Output

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 

Requisitos

Encabezado: <hash_set>

Stdext deEspacio de nombres:

Vea también

Referencia

hash_set Class

Biblioteca de plantillas estándar