Freigeben über


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

Siehe auch

Referenz

multimap Class

Standardvorlagenbibliothek