multimap::multimap
Erstellt eine Multimap, die leer ist, oder die eine Kopie von alle oder nur einen Teil einer anderen Multimaps ist.
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
);
Parameter
Parameter |
Description |
_Al |
Die für dieses multimap-Objekt verwendet werden, Speicherreservierungsklasse, das zu Belegungsfunktion verwendet wird. |
_Comp |
Die Vergleichsfunktion des Typs constTraits verwendet, um Elemente in der Zuordnung zu sortieren, die zu Traits führt. |
_Right |
Die Zuordnung, von der der erstellte Satz, eine Kopie sein soll. |
_First |
Die Position des ersten Elements im Bereich von Elementen kopiert werden. |
_Last |
Die Position des ersten Elements über den Bereich von Elementen hinaus kopiert werden. |
Hinweise
Alle Konstruktoren speichern einen Typ allocator-Objekt, das Arbeitsspeicherspeicher für die Multimap verwaltet und der später zurückgegeben werden kann, indem get_allocator aufruft.Der Belegungsfunktionsparameter wird häufig in Klassendeklarationen und in den Vorverarbeitungsmakros weggelassen, die verwendet werden, um alternative Belegungsfunktionen zu ersetzen.
Alle Konstruktoren initialisieren ihre Multimap.
Alle Konstruktoren speichern ein Funktionsobjekt des Typs Traits, der verwendet wird, um eine Bestellung unter den Schlüssel der Multimaps zu erstellen und das später zurückgegeben werden kann, indem key_comp aufruft.
Die ersten drei Konstruktoren geben eine leere ursprüngliche Multimap an, die den Typ der zweite, wenn sie verwendet werden _Comp Vergleichsfunktion () wird die Reihenfolge der Elemente und der Drittels den verwendet werden Belegungsfunktionstyp (_Al) explizit angibt herstellen.Das Schlüsselwort explicit unterdrückt bestimmte Arten der automatische Konvertierung.
Der vierte Konstruktor wird eine Kopie der Multimaps _Right an.
Die folgenden drei Konstruktoren kopieren den Bereich [_First, _Last) einer Zuordnung bei Erhöhung der Deutlichkeit, wenn sie den Typ der Vergleichsfunktion der Klasse Traits und der Belegungsfunktion angeben.
Der letzte Konstruktor wird eine Kopie der Multimaps an, indem er _Right verschoben wird.
Beispiel
// 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
Anforderungen
Header: <map>
Namespace: std