Partager via


multiset::multiset

Crée un multiensemble qui est vide ou qui est une copie de l'ensemble ou une partie d'un autre multiensemble.

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
);

Paramètres

Paramètre

Description

_Al

La classe de l'allocateur de mémoire à utiliser pour cet objet de multiensemble, qui correspond par défaut à Allocator.

_Comp

La fonction de comparaison du type constCompare utilisé pour classer les éléments dans le multiensemble, qui correspond par défaut à Compare.

_Right

Le multiensemble dont le multiensemble construit doit être une copie.

_First

Position du premier élément de la plage d'éléments à copier.

_Last

Position du premier élément au delà de la plage d'éléments à copier.

Notes

Tous les constructeurs enregistre un type d'objet d'allocation qui gère la mémoire de mémoire pour le multiensemble et qui peut ensuite être retourné en appelant get_allocator.Le paramètre de l'allocateur est souvent omis dans les déclarations de classe et les macros de prétraitement utilisées pour substituer d'autres allocateurs.

Tous les constructeurs initialisent leur multiensemble.

Tous les constructeurs enregistre un objet de fonction de type de comparaison utilisé pour générer une commande entre les clés de multiensemble et qui peut ensuite être retourné en appelant key_comp.

Les trois premiers constructeurs spécifiez un multiensemble initial vide, le deuxième spécifiant le type de fonction de comparaison (_Comp) à utiliser lorsque vous établissez l'ordre des éléments et du tiers spécifiant explicitement le type de l'allocateur (_Al) à utiliser.Le mot clé explicit supprimer certains genres de conversion de type automatique.

Le quatrième constructeur spécifie une copie du multiensemble _Right.

Les trois suivants constructeurs copiez la plage [_First, _Last) d'un multiensemble avec l'augmentation de l'explicité en spécifiant le type de la fonction de comparaison et l'allocateur.

Le dernier constructeur spécifie une copie du multiensemble en déplaçant _Right.

Exemple

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

Sortie

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

Configuration requise

en-tête : <set>

l'espace de noms : DST

Voir aussi

Référence

multiset Class

Modèles Standard