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:
// C++ program to illustrate // the unordered_set.reserve() #include <iostream> #include <string> #include <unordered_set> using namespace std;
int main()
{ // Declaration of unordered_set
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;
} |
geeksforgeeks users geeks for
Program 2:
// C++ program to illustrate // the unordered_set.reserve() #include <iostream> #include <string> #include <unordered_set> using namespace std;
int main()
{ // Declaration of unordered_set
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;
} |
for geeks
Time complexity: O(N)