Compartir a través de


hash_multiset::hash_multiset

[!NOTA]

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

Construye hash_multiset que está vacío o que es una copia de todo o parte de algún otro hash_multiset.

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

Parámetros

Parámetro

Descripción

_Al

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

_Comp

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

_Right

hash_multiset cuyo hash_multiset 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_multiset y pueda devolver más adelante llamando a hash_multiset::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_multisets.

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

Los primeros tres constructores especifican hash_multisetinicial 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_multiset_Right.

Los tres constructores siguientes copian el intervalo [_First,_Last) de un hash_multiset con la mejora de explicidad en especificar el tipo de función de comparación de la clase Comparar y el asignador.

El constructor último mueve hash_multiset_Right.

El orden real de elementos en un contenedor particular hash 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_multiset_hash_multiset.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int>::iterator hms1_Iter, hms3_Iter, hms4_Iter,
      hms5_Iter, hms6_Iter, hms7_Iter;
   hash_multiset <int, hash_compare <int, greater<int> > >::iterator
      hms2_Iter;

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

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

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

   // Create a hash_multiset hms3 with the 
   // allocator of hash_multiset hms1
   hash_multiset <int>::allocator_type hms1_Alloc;
   hms1_Alloc = hms1.get_allocator( );
   hash_multiset <int> hms3( hash_compare <int, less<int> >( ),
      hms1_Alloc );
   hms3.insert( 30 );

   // Create a copy, hash_multiset hms4, of hash_multiset hms1
   hash_multiset <int> hms4( hms1 );

   // Create a hash_multiset hms5 by copying the range hms1[_First, _Last)
   hash_multiset <int>::const_iterator hms1_bcIter, hms1_ecIter;
   hms1_bcIter = hms1.begin( );
   hms1_ecIter = hms1.begin( );
   hms1_ecIter++;
   hms1_ecIter++;
   hash_multiset <int> hms5( hms1_bcIter, hms1_ecIter );

   // Create a hash_multiset hms6 by copying the range hms4[_First, _Last)
   // and with the allocator of hash_multiset hms2
   hash_multiset <int>::allocator_type hms2_Alloc;
   hms2_Alloc = hms2.get_allocator( );
   hash_multiset <int> hms6( hms4.begin( ), ++hms4.begin( ), 
      less<int>( ), hms2_Alloc );

   cout << "hms1 = ";
   for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
         hms1_Iter++ )
      cout << *hms1_Iter << " ";
   cout << endl;
   
   cout << "hms2 = " ;
   for ( hms2_Iter = hms2.begin( ); hms2_Iter != hms2.end( );
         hms2_Iter++ )
      cout << *hms2_Iter << " ";
   cout << endl;

   cout << "hms3 = ";
   for ( hms3_Iter = hms3.begin( ); hms3_Iter != hms3.end( );
         hms3_Iter++ )
      cout << *hms3_Iter << " ";
   cout << endl;

   cout << "hms4 = ";
   for ( hms4_Iter = hms4.begin( ); hms4_Iter != hms4.end( );
         hms4_Iter++ )
      cout << *hms4_Iter << " ";
   cout << endl;

   cout << "hms5 = ";
   for ( hms5_Iter = hms5.begin( ); hms5_Iter != hms5.end( );
         hms5_Iter++ )
      cout << *hms5_Iter << " ";
   cout << endl;

   cout << "hms6 = ";
   for ( hms6_Iter = hms6.begin( ); hms6_Iter != hms6.end( );
         hms6_Iter++ )
      cout << *hms6_Iter << " ";
   cout << endl;

    // Create a copy, hash_multiset hms7, of hash_multiset hms1 by moving
    hash_multiset <int, hash_compare <int, less<int> > >
        hms7(move(hms1);
    cout << "hms7 =";
    for (hms7_Iter = hms7.begin(); hms7_Iter != hms7.end(); hms7_Iter++)
        cout << " " << hms7_Iter -> second;
    cout << endl;
}

Output

hms1 = 40 10 20 30 
hms2 = 10 20 
hms3 = 30 
hms4 = 40 10 20 30 
hms5 = 40 10 
hms6 = 40 
hms7 = 40 10 20 30 

Requisitos

Encabezado: <hash_set>

Stdext deEspacio de nombres:

Vea también

Referencia

hash_multiset Class

Biblioteca de plantillas estándar