hash_multimap::hash_multimap
![]() |
---|
Этот API устарел.Альтернативы unordered_multimap Class. |
Создает hash_multimap, пусты или все или часть, являющийся копией другого hash_multimap.
hash_multimap( );
explicit hash_multimap(
const Compare& _Comp
);
hash_multimap(
const Compare& _Comp,
const Allocator& _Al
);
hash_multimap(
const hash_multimap& _Right
);
template<class InputIterator>
hash_multimap(
InputIterator _First,
InputIterator _Last
);
template<class InputIterator>
hash_multimap(
InputIterator _First,
InputIterator _Last,
const Compare& _Comp
);
template<class InputIterator>
hash_multimap(
InputIterator _First,
InputIterator _Last,
const Compare& _Comp,
const Allocator& _Al
);
hash_multimap(
hash_multimap&& _Right
);
Параметры
Параметр |
Описание |
_Al |
Класс распределитель хранения, используемый для этого объекта hash_multimap, который имеет значения по умолчанию Allocator. |
_Comp |
Функция сравнения типов constTraits, используемого для упорядочивания элементов в сопоставлении, имеющий значение по умолчанию Traits. |
_Right |
Сопоставление что созданный набор быть копией. |
_First |
Положение первого элемента в диапазоне элементов необходимо скопировать. |
_Last |
Позиция первого элемента после конца диапазона элементов необходимо скопировать. |
Заметки
Все конструкторы сохраняют тип объекта выделения памяти для hash_multimap, который управляет хранением и который впоследствии возвращается путем вызова get_allocator.Параметр выделения часто опускается в объявлении класса и макросах предварительной обработки, используемых для замены альтернативные allocators.
Все конструкторы инициализируют их hash_multimap.
Все конструкторы сохраняют объект функции типа Traits, используемые для задания hash_multimap порядок числа ключей и который впоследствии возвращается путем вызова key_comp.
Первые 3 конструктора определяют пустое начальное hash_multimap, второе определение тип функции сравнения (_Comp), используемый при установке порядок элементов и третьего явно указав тип выделения (_Al).Ключевое слово explicit подавляются некоторые типы автоматического преобразования типов.
Четвертый конструктор задает копию hash_multimap _Right.
Следующие 3 конструктора копируют диапазон [_First, _Last) сопоставления с масштабом эксплицитностью в определение типа функции сравнения класса Traits и выделения.
Последний конструктор перемещает hash_multimap _Right.
В Visual C++ .NET 2003 <hash_map> элементы файлов заголовков и <hash_set> больше не находятся в пространстве имен std, но скорее перейти на пространство имен stdext.Дополнительные сведения см. в разделе Пространство имен stdext.
Пример
// hash_multimap_hash_multimap.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
typedef pair <int, int> Int_Pair;
hash_multimap <int, int>::iterator hm1_Iter, hm3_Iter, hm4_Iter,
hm5_Iter, hm6_Iter;
hash_multimap <int, int, hash_compare <int, greater<int> >
>::iterator hm2_Iter;
// Create an empty hash_multimap hm0 of key type integer
hash_multimap <int, int> hm0;
// Create an empty hash_multimap hm1 with the key comparison
// function of less than, then insert 4 elements
hash_multimap <int, int, hash_compare <int, less<int> > > hm1;
hm1.insert( Int_Pair( 1, 10 ) );
hm1.insert( Int_Pair( 2, 20 ) );
hm1.insert( Int_Pair( 3, 30 ) );
hm1.insert( Int_Pair( 4, 40 ) );
// Create an empty hash_multimap hm2 with the key comparison
// function of greater than, then insert 2 elements
hash_multimap <int, int, hash_compare <int, greater<int> > > hm2;
hm2.insert( Int_Pair( 1, 10 ) );
hm2.insert( Int_Pair( 2, 20 ) );
// Create a hash_multimap hm3 with the
// allocator of hash_multimap hm1
hash_multimap <int, int>::allocator_type hm1_Alloc;
hm1_Alloc = hm1.get_allocator( );
hash_multimap <int, int> hm3( hash_compare <int, less<int> > ( ),
hm1_Alloc );
hm3.insert( Int_Pair( 3, 30 ) );
// Create a copy, hash_multimap hm4, of hash_multimap hm1
hash_multimap <int, int> hm4( hm1 );
// Create a hash_multimap hm5 by copying the range hm1[_First, _Last)
hash_multimap <int, int>::const_iterator hm1_bcIter, hm1_ecIter;
hm1_bcIter = hm1.begin( );
hm1_ecIter = hm1.begin( );
hm1_ecIter++;
hm1_ecIter++;
hash_multimap <int, int> hm5( hm1_bcIter, hm1_ecIter );
// Create a hash_multimap hm6 by copying the range hm4[_First, _Last)
// and with the allocator of hash_multimap hm2
hash_multimap <int, int>::allocator_type hm2_Alloc;
hm2_Alloc = hm2.get_allocator( );
hash_multimap <int, int> hm6(hm4.begin( ), ++hm4.begin( ), less<int>( ),
hm2_Alloc);
cout << "hm1 = ";
for ( hm1_Iter = hm1.begin( ); hm1_Iter != hm1.end( ); hm1_Iter++ )
cout << hm1_Iter -> second << " ";
cout << endl;
cout << "hm2 = ";
for ( hm2_Iter = hm2.begin( ); hm2_Iter != hm2.end( ); hm2_Iter++ )
cout << hm2_Iter -> second << " ";
cout << endl;
cout << "hm3 = ";
for ( hm3_Iter = hm3.begin( ); hm3_Iter != hm3.end( ); hm3_Iter++ )
cout << hm3_Iter -> second << " ";
cout << endl;
cout << "hm4 = ";
for ( hm4_Iter = hm4.begin( ); hm4_Iter != hm4.end( ); hm4_Iter++ )
cout << hm4_Iter -> second << " ";
cout << endl;
cout << "hm5 = ";
for ( hm5_Iter = hm5.begin( ); hm5_Iter != hm5.end( ); hm5_Iter++ )
cout << hm5_Iter -> second << " ";
cout << endl;
cout << "hm6 = ";
for ( hm6_Iter = hm6.begin( ); hm6_Iter != hm6.end( ); hm6_Iter++ )
cout << hm6_Iter -> second << " ";
cout << endl;
// Create a copy, hash_map hm7, of hash_multimap hm1 by moving
hash_map<MyStr, MyInt, hash_compare<MyStr, less_str> >
hm7(move(hm1));
cout << "hm7 =";
for (hm7_Iter = hm7.begin(); hm7_Iter != hm7.end(); hm7_Iter++)
cout << " " << hm7_Iter -> second;
cout << endl;
}
Output
hm1 = 10 20 30 40
hm2 = 10 20
hm3 = 30
hm4 = 10 20 30 40
hm5 = 10 20
hm6 = 10
hm7 = 10 20 30 40
Требования
заголовок: <hash_map>
Stdext пространство имен: