一、容器类型
这些哈希容器都是基于哈希表实现的,提供了快速的平均时间复杂度的插入、删除和查找操作。它们通常比有序容器(如 std::set
和 std::map
)在这些操作上更高效。哈希容器的元素顺序是不确定的,因为元素在容器中的存储顺序取决于哈希函数的计算结果。
二、容器常用的函数
这些成员函数能够对哈希容器进行插入、查找、删除等操作,以及提供了一些信息查询功能,帮助用户更灵活地使用哈希容器。
-
unordered_set: 无序集合,容器中的元素是唯一的,按照哈希值进行存储,具有常数时间复杂度的查找、插入和删除操作。
-
unordered_map: 无序映射,存储键-值对,按照键的哈希值进行存储,也具有常数时间复杂度的查找、插入和删除操作。
-
unordered_multiset: 无序多重集合,允许存储相同元素的集合,按照哈希值进行存储。
-
unordered_multimap: 无序多重映射,允许存储具有相同键的键-值对,按照键的哈希值进行存储。
-
insert(): 用于将元素插入到哈希容器中。对于单值的容器(set、map),insert() 方法返回一个 pair 类型,包含一个迭代器指向插入的元素及一个 bool 值,用于表示插入是否成功;对于多重容器(multiset、multimap),则直接返回迭代器。
-
find(): 在容器中查找指定的元素,返回指向该元素的迭代器,若未找到则返回尾后迭代器。
-
erase(): 从容器中删除一个或一段元素,可以传入元素或迭代器作为参数。
-
clear(): 清空容器中所有元素,使其变为空容器。
-
size(): 返回容器中元素的数量。
-
empty(): 检查容器是否为空,如果容器没有元素,则返回 true;否则返回 false。
-
begin() 和 end(): 返回指向容器第一个元素和尾后元素的迭代器,通常用于循环遍历容器中的元素。
-
bucket_count(): 返回当前哈希表中的桶数。
-
bucket_size(n): 返回第 n 个桶中存储的元素数。
-
load_factor(): 返回当前容器中元素的数量与桶数的平均比值。
-
rehash(): 重新散列容器,增加桶的数量以适应更多元素,可能会导致重新分配元素的操作。
-
reserve(): 设置容器最少可以容纳的元素数量,以提高插入元素时的性能。