Поделиться через


multiset::multiset

Построение multiset, пусты, или скопировать все или часть другого 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
    );

Параметры

Параметр

Описание

Al

Класс распределителя хранилища, используемый для этого объекта multiset, устанавливается значение по умолчанию Allocator.

Comp

Функция сравнения типа const Compare используется для упорядочивания элементов в multiset, устанавливается значение по умолчанию Compare.

Right

Multiset, построенный multiset быть копией.

First

Положение первого элемента в диапазоне элементов для копирования.

Last

Положение первого элемента после диапазона элементов для копирования.

IList

Initializer_list, из которого для копирования элементов.

Заметки

Все конструкторы сохраняют тип объекта распределителя, который управляет хранилище памяти для multiset, и может быть возвращено с помощью метода get_allocator. Параметр распределителя часто опускается в объявлении класса и макросах предварительной обработки, чтобы заменить альтернативные распределителей.

Все конструкторы инициализируют их multiset.

Все конструкторы сохраняют объект функции типа ", который используется для задания порядка ключей между multiset, и может быть возвращено с помощью метода key_comp.

Первые 3 конструктора определяют пустой исходный тип multiset, второе определение функции сравнения (Comp), используемый в параметре порядок элементов и третий явно определяет тип распределителя (Al) необходимо использовать. Ключевое слово explicit подавить некоторые типы автоматического преобразования типов.

Задает четвертый конструктор копии multiset Right.

Задает пятый конструктор копии multiset перемещая Right.

Конструкторы, сексты седьмого и восьмого определяют initializer_list, из которого копируются элементы.

Следующие 3 конструктора копируют диапазон [First, Last) multiset с увеличением эксплицитности в определение типа функции и распределителя сравнения.

Пример

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

Output

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

Требования

Заголовок:<set>

Пространство имен: std

См. также

Ссылки

Класс multiset

Библиотека стандартных шаблонов