The unordered_set::reserve() method is a builtin function in C++ STL which is used to request capacity change of unordered_set. It sets the number of buckets in the container 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 the bucket_count, then the function has no effect on it.
Syntax:
unordered_set_name.reserve(size_type n)
Parameter: The function accepts a single mandatory parameter n which sets the number of buckets in the container (bucket_count) to the most appropriate to contain at least n elements.
Return Value: This function doesn’t returns anything.
Below programs illustrate the unordered_set::reserve() function:
Program 1:
CPP
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<string> us;
us.reserve(3);
us.insert( "geeks" );
us.insert( "for" );
us.insert( "geeks" );
us.insert( "users" );
us.insert( "geeksforgeeks" );
for ( auto it = us.begin(); it != us.end(); it++) {
cout << *it << " " ;
}
return 0;
}
|
Output:geeksforgeeks users geeks for
Program 2:
CPP
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<string> us;
us.reserve(0);
us.insert( "geeks" );
us.insert( "for" );
us.insert( "geeks" );
for ( auto it = us.begin(); it != us.end(); it++) {
cout << *it << " " ;
}
return 0;
}
|
Time complexity: O(N)