Condividi tramite


multiset::multiset

Costruisce un multi-insieme che è vuoto o mediante la copia di tutto o parte di un altro multi-insieme.

multiset( );
explicit multiset (
   const Compare& _Comp
);
multiset (
   const Compare& _Comp,
   const Allocator& _Al
);
multiset(
   const multiset& _Right
);
template<class InputIterator> 
   multiset (
      InputIterator _First,
      InputIterator _Last
   );
template<class InputIterator> 
   multiset (
      InputIterator _First,
      InputIterator _Last,
      const Compare& _Comp
   );
template<class InputIterator>
   multiset (
      InputIterator _First,
      InputIterator _Last,
      const Compare& _Comp,
      const Allocator& _Al
   );
multiset(
   multiset&& _Right
);

Parametri

Parametro

Descrizione

_Al

La classe di allocatore di memoria da utilizzare per questo oggetto di multi-insieme, che imposta come valore predefinito a Allocator.

_Comp

La funzione di confronto di tipo constCompare utilizzato per ordinare gli elementi in multi-insieme, che imposta come valore predefinito a Compare.

_Right

Il multi-insieme il cui multi-insieme viene costruito da una copia.

_First

La posizione del primo elemento nella sequenza di elementi da copiare.

_Last

La posizione del primo elemento nell'intervallo di elementi da copiare.

Note

Tutti i costruttori archivia un tipo di oggetto allocatore che gestisce l'archiviazione di memoria per il multi-insieme e che successivamente può essere restituito chiamando get_allocator.Il parametro di allocatore viene omesso spesso nelle dichiarazioni di classe e nelle macro del preprocessore utilizzate per sostituire di allocatori alternativi.

Tutti i costruttori inizializzano il multi-insieme.

Tutti i costruttori archiviano un oggetto funzione di tipo confronto utilizzato per stabilire un ordine tra le chiavi di multi-insieme e che successivamente può essere restituito chiamando key_comp.

I primi tre costruttori specificano un multi-insieme iniziale vuoto, il secondo specifica il tipo di funzione di confronto_Comp() da utilizzare per stabilire l'ordine degli elementi e del terzo specificare in modo esplicito il tipo di_Alallocatore () da utilizzare.La parola chiave explicit elimina determinati tipi di conversione automatica dei tipi.

Il quarto costruttore specifica una copia del multi-insieme _Right.

I tre costruttori seguenti copia dell'intervallo [_First, _Last) di un multi-insieme con l'aumento di chiarezza nello specificare il tipo di funzione di confronto e di allocatore.

L'ultimo costruttore specifica una copia del multi-insieme spostando _Right.

Esempio

// multiset_ctor.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int>::iterator ms1_Iter, ms2_Iter, ms3_Iter;
   multiset <int>::iterator ms4_Iter, ms5_Iter, ms6_Iter, ms7_Iter;

   // Create an empty multiset ms0 of key type integer
   multiset <int> ms0;

   // Create an empty multiset ms1 with the key comparison
   // function of less than, then insert 4 elements
   multiset <int, less<int> > ms1;
   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 20 );
   ms1.insert( 40 );

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

   // Create a multiset ms3 with the 
   // allocator of multiset ms1
   multiset <int>::allocator_type ms1_Alloc;
   ms1_Alloc = ms1.get_allocator( );
   multiset <int> ms3( less<int>( ), ms1_Alloc );
   ms3.insert( 30 );

   // Create a copy, multiset ms4, of multiset ms1
   multiset <int> ms4( ms1 );

   // Create a multiset ms5 by copying the range ms1[_First, _Last)
   multiset <int>::const_iterator ms1_bcIter, ms1_ecIter;
   ms1_bcIter = ms1.begin( );
   ms1_ecIter = ms1.begin( );
   ms1_ecIter++;
   ms1_ecIter++;
   multiset <int> ms5( ms1_bcIter, ms1_ecIter );

   // Create a multiset ms6 by copying the range ms4[_First, _Last)
   // and with the allocator of multiset ms2
   multiset <int>::allocator_type ms2_Alloc;
   ms2_Alloc = ms2.get_allocator( );
   multiset <int> ms6( ms4.begin( ), ++ms4.begin( ), less<int>( ), ms2_Alloc );

   cout << "ms1 =";
   for ( ms1_Iter = ms1.begin( ); ms1_Iter != ms1.end( ); ms1_Iter++ )
      cout << " " << *ms1_Iter;
   cout << endl;
   
   cout << "ms2 = " << *ms2.begin( ) << " " << *++ms2.begin( )
   << endl;

   cout << "ms3 =";
   for ( ms3_Iter = ms3.begin( ); ms3_Iter != ms3.end( ); ms3_Iter++ )
      cout << " " << *ms3_Iter;
   cout << endl;

   cout << "ms4 =";
   for ( ms4_Iter = ms4.begin( ); ms4_Iter != ms4.end( ); ms4_Iter++ )
      cout << " " << *ms4_Iter;
   cout << endl;

   cout << "ms5 =";
   for ( ms5_Iter = ms5.begin( ); ms5_Iter != ms5.end( ); ms5_Iter++ )
      cout << " " << *ms5_Iter;
   cout << endl;

   cout << "ms6 =";
   for ( ms6_Iter = ms6.begin( ); ms6_Iter != ms6.end( ); ms6_Iter++ )
      cout << " " << *ms6_Iter;
   cout << endl;

   // Create a set by moving s5
   set<int> ms7(move(ms5));
   cout << "ms7 =";
   for ( ms7_Iter = ms7.begin( ); ms7_Iter != ms7.end( ); ms7_Iter++ )
      cout << " " << *ms7_Iter;
   cout << endl;
}

Output

ms1 = 10 20 20 40
ms2 = 20 10
ms3 = 30
ms4 = 10 20 20 40
ms5 = 10 20
ms6 = 10
ms7 = 10 20

Requisiti

intestazione: <set>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

multiset Class

Libreria di modelli standard