public member function
<unordered_set>
empty (default) (1) |
explicit unordered_multiset ( size_type n = /* see below */,
const hasher& hf = hasher(),
const key_equal& eql = key_equal(),
const allocator_type& alloc = allocator_type() );
|
---|
copy (2) | unordered_multiset ( const unordered_multiset& ums );
|
---|
move (3) | unordered_multiset ( unordered_multiset&& ums );
|
---|
empty+allocator (4) | explicit unordered_multiset ( const allocator_type& alloc );
|
---|
copy+allocator (5) | unordered_multiset ( const unordered_multiset& ums, const allocator_type& alloc );
|
---|
move+allocator (6) | unordered_multiset ( unordered_multiset&& ums, const allocator_type& alloc );
|
---|
range (7) |
template <class InputIterator>
unordered_multiset ( InputIterator first, InputIterator last,
size_type n = /* see below */,
const hasher& hf = hasher(),
const key_equal& eql = key_equal(),
const allocator_type& alloc = allocator_type() );
|
---|
initializer list (8) |
unordered_multiset ( initializer_list<value_type> il,
size_type n = /* see below */,
const hasher& hf = hasher(),
const key_equal& eql = key_equal(),
const allocator_type& alloc = allocator_type() );
|
---|
Construct unordered_multiset
Constructs an unordered_multiset container object, initializing its contents depending on the constructor version used:
- (1) empty container constructor (default constructor)
- Constructs an empty unordered_multiset object, containing no elements and with a size of zero.
It can construct the container with specific hasher, key_equal and allocator objects, along with a minimum number of hash buckets.
- (2) copy constructor
- The object is initialized to have the same contents and properties as the ums unordered_multiset object.
- (3) move constructor
- The object acquires the contents of the rvalue ums.
- (4),(5),(6) allocator constructors
- Same as (1), (2), (3), but taking an allocator object as additional argument.
- (7) range constructor
- Constructs an unordered_multiset object containing copies of each of the elements in the range [first,last).
- (8) initializer list
- Initializes the container with the contents of the list.
Parameters
- n
- Minimum number of initial buckets.
This is not the number of elements in the container, but the minimum number of slots desired for the internal hash table on construction.
Each library has some specific default value for this parameter if none is specified.
Member type size_type is an unsigned integral type.
- hf
- Hasher function object. A hasher is a function that returns an integral value based on the container object key passed to it as argument.
Member type hasher is defined in unordered_multiset as an alias of its second template parameter (Hash).
- eql
- Comparison function object, that returns true if the two container object keys passed as arguments are to be considered equal.
Member type key_equal is defined in unordered_multiset as an alias of its third template parameter (Pred).
- alloc
- Allocator object to be used instead of constructing a new one.
For class instantiations using their version of the default allocator class template, this parameter is not relevant.
Member type allocator_type is defined in unordered_multiset as an alias of its fourth template parameter (Alloc).
- ums
- Another unordered_multiset object of the same type (with the same class template arguments), whose contents are either copied or moved.
- first, last
- Input iterators to the initial and final positions in a range. The range used is [first,last), which includes all the elements between first and last, including the element pointed by first but not the element pointed by last.
The function template type can be any type of input iterator.
- il
- An initializer_list object.
These objects are automatically constructed from initializer list declarators.
Member type value_type is the type of the elements in the container, defined in unordered_multiset as an alias of the first template parameter (Key).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
// constructing unordered_multisets
#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_multiset<std::string> first; // empty
std::unordered_multiset<std::string> second ( {"red","green","blue"} ); // init list
std::unordered_multiset<std::string> third ( {"red","yellow","blue"} ); // init list
std::unordered_multiset<std::string> fourth ( second ); // copy
std::unordered_multiset<std::string> fifth ( cmerge(third,fourth) ); // move
std::unordered_multiset<std::string> sixth ( fifth.begin(), fifth.end() ); // range
std::cout << "sixth contains:";
for (const std::string& x: sixth) std::cout << " " << x;
std::cout << std::endl;
return 0;
}
|
Possible output:
sixth contains: yellow red red green blue blue
|
Complexity
For the empty (1,4) and move (3,6) constructors: constant time.
For the copy (2,5), range (7), and initializer list (8) constructors: average case linear, worst case quadratic.