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