public member function
<unordered_set>
void reserve ( size_type n );
Request a capacity change
Sets the number of buckets in the container (bucket_count) to the most appropriate to contain at least n elements.
If n is greater than the current bucket_count multiplied by the max_load_factor, the container's bucket_count is increased and a rehash is forced.
If n is lower than that, the function may have no effect.
Parameters
- n
- The number of elements requested as minimum capacity.
Member type size_type is an unsigned integral type.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| // unordered_multiset::reserve #include <iostream> #include <string> #include <unordered_set> int main () { std::unordered_multiset<std::string> myums; myums.reserve(5); myums.insert("klingon"); myums.insert("human"); myums.insert("vulcan"); myums.insert("klingon"); myums.insert("klingon"); std::cout << "myums contains:"; for (const std::string& x: myums) std::cout << " " << x; std::cout << std::endl; return 0; }
|
Possible output:
myums contains: human klingon klingon klingon vulcan |
By calling reserve with the size we expected for the unordered_multiset container we avoided the multiple rehashes that the increases in container size could have produced and optimized the size of the hash table.
Iterator validity
If a rehash happens, all iterators are invalidated, but references and pointers to individual elements remain valid.
If no actual rehash happens, no changes.