Compartilhar via


multiset::multiset

Constrói um multiset que está vazio ou que é uma cópia de todos ou parte de qualquer outro multiset.

multiset( );
explicit multiset (
    const Compare& Comp
);
multiset (
    const Compare& Comp,
    const Allocator& Al
);
multiset(
    const multiset& Right
);
multiset(
    multiset&& Right
);
multiset(
    initializer_list<Type> IList
);

multiset(
    initializer_list<Type> IList, 
    const Compare& Comp
);

multiset(
    initializer_list<Type> IList, 
    const Compare& Comp, 
    const Allocator& Al
);

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

Parâmetros

Parâmetro

Descrição

Al

A classe do alocador de armazenamento a ser usada para este objeto de multiset, que assume como padrão a Allocator.

Comp

A função de comparação de tipo const Compare usada para ordenar os elementos no multiset, que assume como padrão a Compare.

Right

O multiset de que o multiset ser construído é uma cópia.

First

A posição do primeiro elemento no intervalo de elementos a ser copiado.

Last

A posição do primeiro elemento além do intervalo de elementos a ser copiado.

IList

O initializer_list da qual copiar os elementos.

Comentários

Todos os construtores armazenam um tipo de objeto do alocador que gerenciam o armazenamento de memória para o multiset e que pode ser retornado get_allocatorchamando. O parâmetro é omitido do alocador frequentemente em declarações da classe e em macros de pré-processamento usados para substituir alocadores de backup.

Todos os construtores inicializar o multiset.

Todos os construtores armazenam um objeto da função de classificação compara que são usados para estabelecer uma ordem entre as chaves de multiset e que pode ser retornado key_compchamando.

Os três primeiros construtores especificam um multiset inicial vazia, o segundo especificando o tipo da função de comparação (Comp) a ser usada para estabelecer a ordem dos elementos e o terceiro especificando explicitamente o tipo do alocador (Al) a ser usado. A palavra-chave explicit suprime determinados tipos de conversão automática de tipo.

O quarto construtor especifica uma cópia de multiset Right.

O quinto construtor especifica uma cópia de multiset movendo Right.

O sixth, o sétimo, e os construtores oitavo especificam um initializer_list da qual copiar os elementos.

Os três seguintes construtores copiar o intervalo [First, Last) de um multiset com distinção crescente para especificar o tipo de função e do alocador de comparação.

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, less<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 (auto i : ms1)
        cout << " " << i;
    cout << endl;

    cout << "ms2 =";
    for (auto i : ms2)
        cout << " " << i;
   cout << endl;

   cout << "ms3 =";
   for (auto i : ms3)
       cout << " " << i;
    cout << endl;

    cout << "ms4 =";
    for (auto i : ms4)
        cout << " " << i;
    cout << endl;

    cout << "ms5 =";
    for (auto i : ms5)
        cout << " " << i;
    cout << endl;

    cout << "ms6 =";
    for (auto i : ms6)
        cout << " " << i;
    cout << endl;

    // Create a multiset by moving ms5
    multiset<int> ms7(move(ms5));
    cout << "ms7 =";
    for (auto i : ms7)
        cout << " " << i;
    cout << endl;

    // Create a multiset with an initializer_list
    multiset<int> ms8({1, 2, 3, 4});
    cout << "ms8=";
    for (auto i : ms8)
        cout << " " << i;
    cout << endl;
}

Saída

ms1 = 10 20 20 40
ms2 = 10 20
ms3 = 30
ms4 = 10 20 20 40
ms5 = 10 20
ms6 = 10
ms7 = 10 20
ms8= 1 2 3 4

Requisitos

defineCabeçalho: <>

Namespace: std

Consulte também

Referência

Classe multiset

Biblioteca de Modelos Padrão