Compartir a través de


multimap::multimap

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

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

Parámetros

Parámetro

Descripción

_Al

La clase del asignador de almacenamiento que se utilizará para este objeto de multimap, que tomará el asignador.

_Comp

La función de comparación de consttiporasgos utilizado para ordenar los elementos del mapa, que toma como valor predeterminado la rasgos.

_Right

El mapa del conjunto 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 el multimap y pueda devolver más adelante llamando a 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 su multimap.

Todos los constructores almacenan un objeto de función de rasgos tipo que se utiliza para establecer una orden entre las claves de multimap y pueda devolver más adelante llamando a key_comp.

Los primeros tres constructores especifican un multimap inicial 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 explícito suprime ciertos tipos de conversión automática.

El cuarto constructor especifica una copia de multimap _Right.

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

El constructor último especifica una copia de multimap moviendo _Right.

Ejemplo

// multimap_ctor.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   typedef pair <int, int> Int_Pair;
   multimap <int, int>::iterator m1_Iter, m3_Iter, m4_Iter, m5_Iter, m6_Iter, m7_Iter;
   multimap <int, int, greater<int> >::iterator m2_Iter;

   // Create an empty multimap m0 of key type integer
   multimap <int, int> m0;

   // Create an empty multimap m1 with the key comparison
   // function of less than, then insert 4 elements
   multimap <int, int, less<int> > m1;
   m1.insert( Int_Pair( 1, 10 ) );
   m1.insert( Int_Pair( 2, 20 ) );
   m1.insert( Int_Pair( 3, 30 ) );
   m1.insert( Int_Pair( 4, 40 ) );

   // Create an empty multimap m2 with the key comparison
   // function of geater than, then insert 2 elements
   multimap <int, int, greater<int> > m2;
   m2.insert( Int_Pair( 1, 10 ) );
   m2.insert( Int_Pair( 2, 20 ) );

   // Create a multimap m3 with the 
   // allocator of multimap m1
   multimap <int, int>::allocator_type m1_Alloc;
   m1_Alloc = m1.get_allocator( );
   multimap <int, int> m3( less<int>( ), m1_Alloc );
   m3.insert( Int_Pair( 3, 30 ) );

   // Create a copy, multimap m4, of multimap m1
   multimap <int, int> m4( m1 );

   // Create a multimap m5 by copying the range m1[_First, _Last)
   multimap <int, int>::const_iterator m1_bcIter, m1_ecIter;
   m1_bcIter = m1.begin( );
   m1_ecIter = m1.begin( );
   m1_ecIter++;
   m1_ecIter++;
   multimap <int, int> m5( m1_bcIter, m1_ecIter );

   // Create a multimap m6 by copying the range m4[_First, _Last)
   // and with the allocator of multimap m2
   multimap <int, int>::allocator_type m2_Alloc;
   m2_Alloc = m2.get_allocator( );
   multimap <int, int> m6(m4.begin( ), ++m4.begin( ), less<int>( ), m2_Alloc);

   cout << "m1 =";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
   cout << endl;
   
   cout << "m2 =";
   for ( m2_Iter = m2.begin( ); m2_Iter != m2.end( ); m2_Iter++ )
      cout << " " << m2_Iter -> second;
   cout << endl;

   cout << "m3 =";
   for ( m3_Iter = m3.begin( ); m3_Iter != m3.end( ); m3_Iter++ )
      cout << " " << m3_Iter -> second;
   cout << endl;

   cout << "m4 =";
   for ( m4_Iter = m4.begin( ); m4_Iter != m4.end( ); m4_Iter++ )
      cout << " " << m4_Iter -> second;
   cout << endl;

   cout << "m5 =";
   for ( m5_Iter = m5.begin( ); m5_Iter != m5.end( ); m5_Iter++ )
      cout << " " << m5_Iter -> second;
   cout << endl;

   cout << "m6 =";
   for ( m6_Iter = m6.begin( ); m6_Iter != m6.end( ); m6_Iter++ )
      cout << " " << m6_Iter -> second;
   cout << endl;

   // Create a map m7 by moving m5
   cout << "m7 =";
   map<int, int> m7(move(m5));
   for ( m7_Iter = m7.begin( ); m7_Iter != m7.end( ); m7_Iter++ )
      cout << " " << m7_Iter -> second;
   cout << endl;
}

Output

m1 = 10 20 30 40
m2 = 20 10
m3 = 30
m4 = 10 20 30 40
m5 = 10 20
m6 = 10 
m7 = 10 20

Requisitos

encabezado: <Asignar>

espacio de nombres: std

Vea también

Referencia

multimap Class

Biblioteca de plantillas estándar