unordered_set Class
模板类描述对象控件类型 const Key的元素更改某个长的序列。 该序列由哈希函数弱排序,分区序列到顺序的中设置子序列调用存储桶。 在每个存储桶中比较函数确定中的任何一个是否对组件具有等效排序。 每个元素用作排序关键字和值。 序列表示为允许查找、任意元素插入和删除与许多操作可元素数依赖于序列的方法 (常数时),则为; 至少在所有存储桶是大致相等的长度时。 在最坏情况下,那么,当所有元素都一个存储桶时,操作的数量与元素数成比例在序列 (线性时间)。 而且,请插入元素不会使迭代器,并且,移除元素无效点在被移除的元素的那些迭代器。
template<class Key,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<Key> >
class unordered_set;
参数
Parameter |
说明 |
Key |
关键类型。 |
Hash |
哈希函数对象类型。 |
Pred |
相等比较函数对象类型。 |
Alloc |
分配器类。 |
成员
类型定义 |
说明 |
一个分配器的类型管理存储的。 |
|
常数的迭代器类型的控制序列的。 |
|
常数的存储桶迭代器类型的控制序列的。 |
|
常数的指针类型的元素。 |
|
常量的类型对元素。 |
|
带符号距离的类型两个元素间的。 |
|
哈希函数的类型。 |
|
一个迭代器类型的控制序列的。 |
|
比较函数的类型。 |
|
一个排序的键的类型。 |
|
一个存储桶迭代器类型的控制序列的。 |
|
指针的类型的元素。 |
|
引用的类型的元素。 |
|
无符号距离的类型两个元素间的。 |
|
元素的类型。 |
成员函数 |
说明 |
指定受控序列的开头。 |
|
获取键值的存储桶数字。 |
|
获取存储桶的数目。 |
|
获取存储桶大小。 |
|
指定受控序列的开头。 |
|
指定受控序列的末尾。 |
|
移除所有元素。 |
|
看到匹配指定的键的元素的数目。 |
|
添加就地构造一个元素。 |
|
添加一个元素就地构造,将提示。 |
|
测试组件是否不存在。 |
|
指定受控序列的末尾。 |
|
查找与指定的键的范围。 |
|
移除指定位置处的元素。 |
|
查找与指定键匹配的元素。 |
|
获取存储的分配器对象。 |
|
获取存储的哈希函数对象。 |
|
添加元素。 |
|
获取存储的比较函数对象。 |
|
计算平均元素每个存储桶。 |
|
获取存储桶的最大数目。 |
|
获取或设置最大元素每个存储桶。 |
|
获取控件序列的最大大小。 |
|
重新生成哈希表。 |
|
计算元素的数量。 |
|
交换两个容器的内容。 |
|
构造容器对象。 |
运算符 |
说明 |
复制哈希表。 |
备注
它通过调用两个单元的对象控制的对象对该序列,类型 unordered_set::key_equal 比较函数对象和类型 unordered_set::hasher哈希函数对象。 您访问第一次调用成员函数存储的对象 unordered_set::key_eq();您访问第二通过调用成员函数存储的对象 unordered_set::hash_function()。 具体而言,因此,只有当两个参数值具有等效排序,对于类型 Key的任何值 X 和 Y ,调用 key_eq()(X, Y) 返回 true;调用 hash_function()(keyval) 给定类型 size_t的值的分布。 不同于模板类 unordered_multiset Class,模板类 unordered_set 对象确保 key_eq()(X, Y) 为控件序列的任何两个元素始终为 false。 (键是唯一的。)
对象还存储一个最大负载因素,指定元素的最大值所需数量平均每个存储桶。 如果插入元素仅 unordered_set::load_factor() 超过最大负载因素,容器增加存储桶数并重新生成哈希表根据需要。
组件实际顺序在控件序列的取决于哈希函数、比较函数、插入序列,最大负载因子和存储桶的当前项数。 您通常无法预测元素顺序在控件的序列。 ,但是,您可以始终是确定元素的任何子集具有等效排序是相邻的在控件序列。
对象分配并通过类型的控件 unordered_set::allocator_type一个单元的分配器对象序列中未使用记忆字段。 此类分配器对象必须有外部接口和模板类同名 allocator对象。 请注意存储的分配器对象不会复制,当容器对象分配。
要求
**标题:**unordered_set
命名空间: std