Compartilhar via


multimap::multimap

Constrói um multimap que seja vazio ou que é uma cópia inteira ou a parte de qualquer outro 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

Descrição

_Al

A classe do distribuidor de armazenamento para ser usada em este objeto de multimap, que tem como padrão o distribuidor.

_Comp

A função de comparação de tipo constTraits usado para ordenar os elementos no mapa, que padrão é Traits.

_Right

O mapa de que o conjunto é construído ser uma cópia.

_First

A posição do primeiro elemento no intervalo de elementos ser copiado.

_Last

A posição do primeiro elemento além do intervalo de elementos ser copiado.

Comentários

Todos os construtores armazenam um tipo de objeto do distribuidor que gerenciam o armazenamento de memória para o multimap e posteriormente que pode ser retornado get_allocatorchamando.O parâmetro do distribuidor é omitido geralmente nas declarações da classe e em macros de pré-processamento usados para substituir distribuidores alternativas.

Todos os construtores inicializam seu multimap.

Todos os construtores armazenam um objeto de função do tipo Traits que são usados para estabelecer uma ordem entre as chaves de multimap e posteriormente que pode ser retornado key_compchamando.

Os primeiros três construtores especificam um multimap inicial vazia, o segundo especificando o tipo de função de comparação (_Comp) a ser usado para estabelecer a ordem dos elementos e da terceira especificando explicitamente o tipo do distribuidor (_Al) a ser usado.A palavra chave explicit suprime certos tipos de conversão automática de tipo.

O quarto construtor especifica uma cópia de multimap _Right.

Os três construtores seguir copia o intervalo [_First, _Last) de um mapa com clareza crescente em especificar o tipo de função de comparação da classe Traits e o distribuidor.

O construtor do último especifica uma cópia de multimap movendo _Right.

Exemplo

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

Saída

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

Requisitos

Cabeçalho: <map>

namespace: STD

Consulte também

Referência

multimap Class

Standard Template Library