multiset::multiset
Constrói um multiset que seja vazio ou que é uma cópia inteira ou a parte de qualquer outro multiset.
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
);
Parâmetros
Parâmetro |
Descrição |
_Al |
A classe do distribuidor de armazenamento para ser usada em este objeto de multiset, que padrão é Allocator. |
_Comp |
A função de comparação de tipo constCompare usado para ordenar os elementos no multiset, que padrão é Compare. |
_Right |
O multiset de que o multiset é construído ser uma cópia. |
_First |
A posição do primeiro elemento no intervalo de elementos ser copiado. |
_Last |
A posição do primeiro elemento além do intervalo de elementos ser copiado. |
Comentários
Todos os construtores armazenam um tipo de objeto do distribuidor que gerenciam o armazenamento de memória para o multiset e posteriormente que pode ser retornado get_allocatorchamando.O parâmetro do distribuidor é omitido geralmente nas declarações da classe e em macros de pré-processamento usados para substituir distribuidores alternativas.
Todos os construtores inicializam seu multiset.
Todos os construtores armazenam um objeto de função do tipo comparam que são usados para estabelecer uma ordem entre as chaves de multiset e posteriormente que pode ser retornado key_compchamando.
Os primeiros três construtores especificam um multiset inicial vazia, o segundo especificando o tipo de função de comparação (_Comp) a ser usado para estabelecer a ordem dos elementos e da terceira especificando explicitamente o tipo do distribuidor (_Al) a ser usado.A palavra-chave explicit suprime certos tipos de conversão automática de tipo.
O quarto construtor especifica uma cópia de multiset _Right.
Os três construtores seguir copia o intervalo [_First, _Last) de um multiset com clareza crescente em especificar o tipo de função e de distribuidor de comparação.
O construtor do último especifica uma cópia de multiset movendo _Right.
Exemplo
// 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;
}
Saída
ms1 = 10 20 20 40
ms2 = 20 10
ms3 = 30
ms4 = 10 20 20 40
ms5 = 10 20
ms6 = 10
ms7 = 10 20
Requisitos
Cabeçalho: <set>
namespace: STD