multimap::multimap
Construye un multimap que está vacío o que es una copia de todo o de parte de otro multimap.
multimap( );
explicit multimap(
const Traits& Comp
);
multimap(
const Traits& Comp,
const Allocator& Al
);
map(
const multimap& Right
);
multimap(
multimap&& Right
);
multimap(
initializer_list<value_type> IList
);
multimap(
initializer_list<value_type> IList,
const Compare& Comp
);
multimap(
initializer_list<value_type> IList,
const Compare& Comp,
const Allocator& Al
);
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
);
Parámetros
Parámetro |
Descripción |
Al |
Clase de asignador de almacenamiento que se utilizará para este objeto multimap, que de forma predeterminada es Allocator. |
Comp |
Función de comparación de tipo const Traits utilizada para ordenar los elementos de la asignación, que de forma predeterminada es Traits. |
Right |
Asignación de la que el conjunto construido va a ser una copia. |
First |
Posición del primer elemento en el intervalo de elementos que se va a copiar. |
Last |
Posición del primer elemento más allá del intervalo de elementos que se va a copiar. |
IList |
initializer_list de la que se van a copiar los elementos. |
Comentarios
Todos los constructores almacenan un tipo de objeto de asignador que administra el almacenamiento en memoria del multimap y que se puede devolver más adelante llamando a get_allocator. El parámetro de asignador se suele omitir en las declaraciones de clase y las macros de preprocesamiento que se utilizan para sustituir asignadores alternativos.
Todos los constructores inicializan su multimap.
Todos los constructores almacenan un objeto de función de tipo Traits que se utiliza para establecer un orden entre las claves del multimap y que se puede devolver más adelante llamando a key_comp.
Los tres primeros constructores especifican un multimap inicial vacío, el segundo especifica el tipo de función de comparación (Comp) que se utilizará para establecer el orden de los elementos y el tercero especifica explícitamente el tipo de asignador (Al) que se va a utilizar. La palabra clave explicit suprime ciertas clases de conversión automática de tipos.
El cuarto constructor especifica una copia del multimap Right.
El quinto constructor especifica una copia del multimap moviendo Right.
Los constructores sexto, séptimo y octavo copian los miembros de una initializer_list.
Los tres constructores siguientes copian el intervalo [First, Last) de un mapa especificando de forma cada vez más explícita el tipo de función de comparación de clase Traits y el asignador.
Ejemplo
// multimap_ctor.cpp
// compile with: /EHsc
#include <map>
#include <iostream>
int main()
{
using namespace std;
typedef pair <int, int> Int_Pair;
// 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, less<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 (auto i : m1)
cout << i.first << " " << i.second << ", ";
cout << endl;
cout << "m2 =";
for (auto i : m2)
cout << i.first << " " << i.second << ", ";
cout << endl;
cout << "m3 =";
for (auto i : m3)
cout << i.first << " " << i.second << ", ";
cout << endl;
cout << "m4 =";
for (auto i : m4)
cout << i.first << " " << i.second << ", ";
cout << endl;
cout << "m5 =";
for (auto i : m5)
cout << i.first << " " << i.second << ", ";
cout << endl;
cout << "m6 =";
for (auto i : m6)
cout << i.first << " " << i.second << ", ";
cout << endl;
// Create a multimap m8 by copying in an initializer_list
multimap<int, int> m8{ { { 1, 1 }, { 2, 2 }, { 3, 3 }, { 4, 4 } } };
cout << "m8: = ";
for (auto i : m8)
cout << i.first << " " << i.second << ", ";
cout << endl;
// Create a multimap m9 with an initializer_list and a comparator
multimap<int, int> m9({ { 5, 5 }, { 6, 6 }, { 7, 7 }, { 8, 8 } }, less<int>());
cout << "m9: = ";
for (auto i : m9)
cout << i.first << " " << i.second << ", ";
cout << endl;
// Create a multimap m10 with an initializer_list, a comparator, and an allocator
multimap<int, int> m10({ { 9, 9 }, { 10, 10 }, { 11, 11 }, { 12, 12 } }, less<int>(), m9.get_allocator());
cout << "m10: = ";
for (auto i : m10)
cout << i.first << " " << i.second << ", ";
cout << endl;
}
Resultados
Requisitos
Encabezado: <map>
Espacio de nombres: std