A bucket is a slot in the container's internal hash table to which elements are assigned based on their hash value.
The number of elements in a bucket influences the time it takes to access a particular element in the bucket. The container automatically increases the number of buckets to keep the load factor (which is the average bucket size) below its max_load_factor.
Parameters
n
Bucket number.
This shall be lower than bucket_count.
Member type size_type is an unsigned integral type.
Return Value
The number of elements in bucket n.
Member type size_type is an unsigned integral type.
// unordered_multiset::bucket_size
#include <iostream>
#include <string>
#include <unordered_set>
int main ()
{
std::unordered_multiset<std::string> myums =
{"human","klingon","klingon","vulcan","romulan","cardassian"};
unsigned nbuckets = myums.bucket_count();
std::cout << "myums has " << nbuckets << " buckets:\n";
for (unsigned i=0; i<nbuckets; ++i) {
std::cout << "bucket #" << i << " has " << myums.bucket_size(i) << " elements.\n";
}
return 0;
}
Possible output (the actual number of buckets depends on the library implementation):
myset has 7 buckets:
bucket #0 has 0 elements.
bucket #1 has 0 elements.
bucket #2 has 0 elements.
bucket #3 has 2 elements.
bucket #4 has 0 elements.
bucket #5 has 4 elements.
bucket #6 has 0 elements.