It is used to construct an unordered_set container object.
Following is the declaration for std::unordered_set::unordered_set.
explicit unordered_set ( size_type n = /* see below */, const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& alloc = allocator_type() );
n − It contains information about minimum number of initial buckets.
hf − It is a hasher function object.
eql − It is a comparison function object.
alloc − It is an allowcator object.
first, last − Input iterators.
ust − It is an another unordered_set object of the same type.
il − It is an initializer_list object.
none
Exception is thrown if any element comparison object throws exception.
Please note that invalid arguments cause undefined behavior.
constant time.
The following example shows the usage of std::unordered_set::unordered_set.
#include <iostream> #include <string> #include <unordered_set> template<class T> T cmerge (T a, T b) { T t(a); t.insert(b.begin(),b.end()); return t; } int main () { std::unordered_set<std::string> first; std::unordered_set<std::string> second ( {"100","200","300"} ); std::unordered_set<std::string> third ( {"400","500","600"} ); std::unordered_set<std::string> fourth ( second ); std::unordered_set<std::string> fifth ( cmerge(third,fourth) ); std::unordered_set<std::string> sixth ( fifth.begin(), fifth.end() ); std::cout << "sixth contains:"; for (const std::string& x: sixth) std::cout << " " << x; std::cout << std::endl; return 0; }
Let us compile and run the above program, this will produce the following result −
sixth contains: 500 400 300 600 100 200