📅  最后修改于: 2023-12-03 15:13:56.856000             🧑  作者: Mango
在 C++ 的 STL 中,unordered_multiset
是一种无序的关联容器,类似于 set
,但可以包含多个相同键的元素。bucket()
是 unordered_multiset
中的一个成员函数,用于返回某个特定元素的 bucket 编号,这个编号代表了元素在哈希表中对应的桶的位置。
size_type bucket( const key_type& key ) const;
其中,key
是要查找的元素的键,size_type
是一个无符号整数类型,在 C++ 中通常是 std::size_t
。
返回值是一个 size_type
类型的无符号整数,表示指定元素的 bucket 编号。
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_multiset<int> mySet = { 5, 10, 15, 20, 25 };
std::cout << "mySet.bucket(10) = " << mySet.bucket(10) << std::endl;
std::cout << "mySet.bucket(20) = " << mySet.bucket(20) << std::endl;
std::cout << "mySet.bucket(30) = " << mySet.bucket(30) << std::endl;
return 0;
}
输出:
mySet.bucket(10) = 3
mySet.bucket(20) = 4
mySet.bucket(30) = 4
在此示例中,我们使用 std::unordered_multiset
创建了一个名为 mySet
的无序多集,其中包含了 5 个元素。我们调用了 mySet.bucket(10)
、mySet.bucket(20)
和 mySet.bucket(30)
,分别查找了元素 10、20 和 30 所在的桶的编号,并输出了结果。在这个例子中,元素 10 在第 3 个桶中,元素 20 和 30 在第 4 个桶中。
bucket()
函数是一个常量成员函数,调用时不会改变容器中的内容。mySet
中不存在键为 key
的元素,bucket()
函数返回的是一个即将插入新元素位置的 bucket 编号。比如,如果 mySet
中包含元素 5, 15
,那么 mySet.bucket(10)
的返回值实际上是插入元素 10
时所在的 bucket 编号,也就是第 3 个桶的编号。unordered_multiset
中的桶的数量通常会等于 mySet.bucket_count()
。如果需要访问每个桶中的元素,可以使用 begin(n)
和 end(n)
函数,其中 n
是桶的编号。