📅  最后修改于: 2023-12-03 14:59:46.891000             🧑  作者: Mango
unordered_multimap
是C++ STL中的一种关联容器,它可以存储键-值对,其中键可以重复出现,同时对于相同的键,可以存在多个对应的值。unordered_multimap
内部使用哈希表来实现高效的查找功能,因此其查找、插入、删除等操作的平均时间复杂度为$O(1)$,但是在最坏情况下,时间复杂度可能达到$O(n)$。
unordered_multimap::bucket_size()
函数可以用来查询哈希表中一个桶中元素的数量,即给定一个索引,返回对应的链表中元素的个数。
size_type bucket_size(size_type n) const;
其中,size_type
是无符号整数类型,通常为size_t
,表示存储在哈希表中元素的数量,n
表示桶的索引,从0开始。
#include <iostream>
#include <unordered_map>
int main() {
// 创建一个unordered_multimap
std::unordered_multimap<int, std::string> mymap = {
{1, "Alice"},
{2, "Bob"},
{3, "Charlie"},
{4, "David"},
{5, "Eve"},
{6, "Frank"}};
// 遍历哈希表,并输出每个桶中元素的数量
for (std::size_t i = 0; i < mymap.bucket_count(); ++i) {
std::cout << "bucket #" << i << " has "
<< mymap.bucket_size(i) << " elements.\n";
}
return 0;
}
输出结果为:
bucket #0 has 0 elements.
bucket #1 has 2 elements.
bucket #2 has 1 elements.
bucket #3 has 1 elements.
bucket #4 has 1 elements.
bucket #5 has 1 elements.
bucket #6 has 1 elements.
bucket #7 has 0 elements.
bucket #8 has 0 elements.
bucket #9 has 0 elements.
unordered_multimap
是C++11的新增特性,需要使用-std=c++11
选项进行编译。unordered_multimap::bucket_count()
,但是不同的实现可能具有不同的默认值。