template < class Key, // unordered_set::key_type/value_type
class Hash = hash<Key>, // unordered_set::hasher
class Pred = equal_to<Key>, // unordered_set::key_equal
class Alloc = allocator<Key> // unordered_set::allocator_type
> class unordered_set;
无序集是不按特定顺序存储唯一元素的容器,它允许根据单个元素的值快速检索单个元素。在unordered_set中,元素的值同时是其键,它唯一地标识它。键是不可变的,因此,unordered_set中的元素不能在容器中修改一次 - 但是可以插入和删除它们。
在内部,unordered_set中的元素没有按任何特定顺序排序,但是根据它们的哈希值组织成桶,以允许通过它们的值直接快速访问各个元素(平均时间复杂度恒定)。
unordered_set容器比通过其键访问单个元素的set容器更快,尽管它们通过其元素子集的范围迭代通常效率较低。
unordered_set特性:
联想:关联容器中的元素由其键引用,而不是由它们在容器中的绝对位置引用。
无序:无序容器使用哈希表来组织其元素,这些哈希表允许通过键快速访问元素。
组:元素的值也是用于标识它的键。
独特的钥匙:容器中没有两个元素可以具有等效键。
分配器感知:容器使用allocator对象来动态处理其存储需求。
注意:unordered_set中的所有迭代器都指向const元素。
参数说明:
n -- 初始桶的最小数量。 这不是容器中元素的数量,而是构造时内部哈希表所需的最小插槽数。如果未指定此参数,则构造函数会自动确定(以某种方式取决于特定的库实现)
hf -- Hasher功能对象。 hasher是一个函数,它根据作为参数传递给它的容器对象键返回一个整数值.成员类型hash