multiset::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
);
Параметры
Параметр |
Описание |
_Al |
Класс распределитель хранения, используемый для этого объекта мультинабора, который имеет значения по умолчанию Allocator. |
_Comp |
Функция сравнения типов constCompare, используемого для упорядочивания элементов мультинабора, который имеет значения по умолчанию Compare. |
_Right |
Multiset что созданный мультинабора быть копией. |
_First |
Положение первого элемента в диапазоне элементов необходимо скопировать. |
_Last |
Позиция первого элемента после конца диапазона элементов необходимо скопировать. |
Заметки
Все конструкторы сохраняют тип объекта выделения памяти для мультинаборов, который управляет хранением и который впоследствии возвращается путем вызова get_allocator.Параметр выделения часто опускается в объявлении класса и макросах предварительной обработки, используемых для замены альтернативные allocators.
Все конструкторы инициализируют их мультинабора.
Все конструкторы сохраняют объект функции типа сравнения, используемые для задания порядка между ключей и multiset, который впоследствии возвращается путем вызова key_comp.
Первые 3 конструктора определяют пустой начальный мультинабора, второе определение тип функции сравнения (_Comp), используемый при установке порядок элементов и третьего явно указав тип выделения (_Al).Ключевое слово explicit подавляются некоторые типы автоматического преобразования типов.
Четвертый конструктор multiset _Right задает копию.
Следующие 3 конструктора копирует диапазон [_First, _Last) мультинабора с масштабом эксплицитностью в определение типа функции и механизм распределения сравнения.
Последний конструктор задает копию мультинабора, перемещая _Right.
Пример
// 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;
}
Output
ms1 = 10 20 20 40
ms2 = 20 10
ms3 = 30
ms4 = 10 20 20 40
ms5 = 10 20
ms6 = 10
ms7 = 10 20
Требования
заголовок: <set>
std пространство имен: