hash_multiset::hash_multiset
备注
此 API 已过时。另一种方法是 unordered_multiset Class。
构造为空或属于某其他 hash_multiset全部或部分的副本的 hash_multiset。
hash_multiset( );
explicit hash_multiset(
const Traits& _Comp
);
hash_multiset(
const Traits& _Comp,
const Allocator& _Al
);
hash_multiset(
const hash_multiset<Key, Traits, Allocator>& _Right
);
template<class InputIterator>
hash_multiset(
InputIterator _First,
InputIterator _Last
);
template<class InputIterator>
hash_multiset(
InputIterator _First,
InputIterator _Last,
const Traits& _Comp
);
template<class InputIterator>
hash_multiset(
InputIterator _First,
InputIterator _Last,
const Traits& _Comp,
const Allocator& _Al
);
hash_multiset(
hash_multiset&& _Right
};
参数
Parameter |
描述 |
_Al |
为此 hash_multiset 对象将使用的存储为程序选件类,默认为 Allocator。 |
_Comp |
使用的类型 const Traits 的比较函数按 hash_multiset的元素,默认为 hash_compare。 |
_Right |
构造的 hash_multiset 是复制的 hash_multiset。 |
_First |
第一个元素的位置在要复制的元素范围内。 |
_Last |
第一个元素的位置在要复制的元素范围的。 |
备注
所有构造函数存储的分配器对象的类型管理 hash_multiset 的内存存储,并且可以通过调用 hash_multiset::get_allocator之后返回。 分配器参数在所使用的选件类声明和预处理器宏通常忽略替换替换分配器。
所有构造函数初始化它们的 hash_multisets。
所有构造函数存储用于建立在 hash_multiset 键中的一个命令,并可通过调用 hash_multiset::key_comp后返回类型 Traits 的函数对象。 有关 Traits 的更多信息 hash_multiset Class 请参见主题。
指定 null 的初始 hash_multiset,第二个参数指定比较函数 (_Comp) 的类型用于建立元素和第三的顺序显式指定分配器类型 (_Al) 的前三个构造函数是使用。 关键字 explicit 禁止某些类型的自动类型转换。
第四个构造函数指定 hash_multiset_Right的副本。
接下来的三个构造函数复制范围 [_First、_Last) 的 hash_multiset 随着在指定选件类的比较函数的类型的显式将比较和分配器。
最后一个构造函数移动 hash_multiset_Right。
组件实际顺序以哈希设置容器的取决于哈希函数、排序的功能和哈希表的当前范围,不能,通常,预测,因为它可以与设置的容器,将该排序的功能取决于它。
示例
// hash_multiset_hash_multiset.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int>::iterator hms1_Iter, hms3_Iter, hms4_Iter,
hms5_Iter, hms6_Iter, hms7_Iter;
hash_multiset <int, hash_compare <int, greater<int> > >::iterator
hms2_Iter;
// Create an empty hash_multiset hs0 of key type integer
hash_multiset <int> hs0;
// Create an empty hash_multiset hms1 with the key comparison
// function of less than, then insert 4 elements
hash_multiset <int, hash_compare <int, less<int> > > hms1;
hms1.insert( 10 );
hms1.insert( 20 );
hms1.insert( 30 );
hms1.insert( 40 );
// Create an empty hash_multiset hms2 with the key comparison
// function of geater than, then insert 2 elements
hash_multiset <int, hash_compare <int, greater<int> > > hms2;
hms2.insert( 10 );
hms2.insert( 20 );
// Create a hash_multiset hms3 with the
// allocator of hash_multiset hms1
hash_multiset <int>::allocator_type hms1_Alloc;
hms1_Alloc = hms1.get_allocator( );
hash_multiset <int> hms3( hash_compare <int, less<int> >( ),
hms1_Alloc );
hms3.insert( 30 );
// Create a copy, hash_multiset hms4, of hash_multiset hms1
hash_multiset <int> hms4( hms1 );
// Create a hash_multiset hms5 by copying the range hms1[_First, _Last)
hash_multiset <int>::const_iterator hms1_bcIter, hms1_ecIter;
hms1_bcIter = hms1.begin( );
hms1_ecIter = hms1.begin( );
hms1_ecIter++;
hms1_ecIter++;
hash_multiset <int> hms5( hms1_bcIter, hms1_ecIter );
// Create a hash_multiset hms6 by copying the range hms4[_First, _Last)
// and with the allocator of hash_multiset hms2
hash_multiset <int>::allocator_type hms2_Alloc;
hms2_Alloc = hms2.get_allocator( );
hash_multiset <int> hms6( hms4.begin( ), ++hms4.begin( ),
less<int>( ), hms2_Alloc );
cout << "hms1 = ";
for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
hms1_Iter++ )
cout << *hms1_Iter << " ";
cout << endl;
cout << "hms2 = " ;
for ( hms2_Iter = hms2.begin( ); hms2_Iter != hms2.end( );
hms2_Iter++ )
cout << *hms2_Iter << " ";
cout << endl;
cout << "hms3 = ";
for ( hms3_Iter = hms3.begin( ); hms3_Iter != hms3.end( );
hms3_Iter++ )
cout << *hms3_Iter << " ";
cout << endl;
cout << "hms4 = ";
for ( hms4_Iter = hms4.begin( ); hms4_Iter != hms4.end( );
hms4_Iter++ )
cout << *hms4_Iter << " ";
cout << endl;
cout << "hms5 = ";
for ( hms5_Iter = hms5.begin( ); hms5_Iter != hms5.end( );
hms5_Iter++ )
cout << *hms5_Iter << " ";
cout << endl;
cout << "hms6 = ";
for ( hms6_Iter = hms6.begin( ); hms6_Iter != hms6.end( );
hms6_Iter++ )
cout << *hms6_Iter << " ";
cout << endl;
// Create a copy, hash_multiset hms7, of hash_multiset hms1 by moving
hash_multiset <int, hash_compare <int, less<int> > >
hms7(move(hms1);
cout << "hms7 =";
for (hms7_Iter = hms7.begin(); hms7_Iter != hms7.end(); hms7_Iter++)
cout << " " << hms7_Iter -> second;
cout << endl;
}
Output
hms1 = 40 10 20 30
hms2 = 10 20
hms3 = 30
hms4 = 40 10 20 30
hms5 = 40 10
hms6 = 40
hms7 = 40 10 20 30
要求
标头: <hash_set>
命名空间: stdext