public member function
<unordered_map>

std::unordered_multimap::unordered_multimap

empty (1)
explicit unordered_multimap ( size_type n = /* see below */,
                              const hasher& hf = hasher(),
                              const key_equal& eql = key_equal(),
                              const allocator_type& alloc = allocator_type() );
explicit unordered_multimap ( const allocator_type& alloc );
range (2)
template <class InputIterator>
         unordered_multimap ( 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() );
copy (3)
unordered_multimap ( const unordered_multimap& umm );
unordered_multimap ( const unordered_multimap& umm, const allocator_type& alloc );
move (4)
unordered_multimap ( unordered_multimap&& umm );
unordered_multimap ( unordered_multimap&& umm, const allocator_type& alloc );
initializer list (5)
unordered_multimap ( 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() );
empty (1)
unordered_multimap();
explicit unordered_multimap ( size_type n,
                              const hasher& hf = hasher(),
                              const key_equal& eql = key_equal(),
                              const allocator_type& alloc = allocator_type() );
explicit unordered_multimap ( const allocator_type& alloc );
         unordered_multimap ( size_type n, const allocator_type& alloc );
         unordered_multimap ( size_type n, const hasher& hf,
                              const allocator_type& alloc );
range (2)
template <class InputIterator>
  unordered_multimap ( 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() );
template <class InputIterator>
  unordered_multimap ( InputIterator first, InputIterator last,
                       size_type n, const allocator_type& alloc );
template <class InputIterator>
  unordered_multimap ( InputIterator first, InputIterator last,
                       size_type n, const hasher& hf,
                       const allocator_type& alloc );
copy (3)
unordered_multimap ( const unordered_multimap& umm );
unordered_multimap ( const unordered_multimap& umm, const allocator_type& alloc );
move (4)
unordered_multimap ( unordered_multimap&& umm );
unordered_multimap ( unordered_multimap&& umm, const allocator_type& alloc );
initializer list (5)
unordered_multimap ( 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() );
unordered_multimap ( initializer_list<value_type> il, size_type n,
                     const allocator_type& alloc );
unordered_multimap ( initializer_list<value_type> il, size_type n, const hasher& hf,
                     const allocator_type& alloc );
Construct unordered_multimap
Constructs an unordered_multimap container object, initializing its contents depending on the constructor version used:

(1) empty container constructor (default constructor)
Constructs an empty unordered_multimap 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) range constructor
Constructs an unordered_multimap object containing copies of each of the elements in the range [first,last).
(3) copy constructor (and copying with allocator)
The object is initialized to have the same contents and properties as the umm unordered_multimap object.
(4) move constructor (and moving with allocator)
The object acquires the contents of the rvalue umm.
(5) 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.
If this argument is not specified, the constructor determines this automatically (in a way that depends on the particular library implementation).
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_multimap as an alias of its third 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_multimap as an alias of its fourth 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_multimap as an alias of its fifth template parameter (Alloc).
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.
umm
Another unordered_multimap object of the same type (with the same class template arguments), whose contents are either copied or moved.
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_multimap as pair<const key_type,mapped_type>, where member type key_type is an alias of the first template parameter (the key type), and mapped_type is an alias of the second template parameter (the mapped type, T).

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// constructing unordered_multimaps
#include <iostream>
#include <string>
#include <unordered_map>

typedef std::unordered_multimap<std::string,std::string> stringmap;

stringmap merge (stringmap a,stringmap b) {
  stringmap temp(a); temp.insert(b.begin(),b.end()); return temp;
}

int main ()
{
  stringmap first;                              // empty
  stringmap second ( {{"apple","red"},{"lemon","yellow"}} );       // init list
  stringmap third ( {{"apple","green"},{"strawberry","red"}} );  // init list
  stringmap fourth (second);                    // copy
  stringmap fifth (merge(third,fourth));        // move
  stringmap sixth (fifth.begin(),fifth.end());  // range

  std::cout << "sixth contains:";
  for (auto& x: sixth) std::cout << " " << x.first << ":" << x.second;
  std::cout << std::endl;

  return 0;
}


Possible output:
sixth contains: apple:green apple:red lemon:yellow strawberry:red

Complexity

For the empty (1) and move (4) constructors: constant time.
For the range (2), copy (3), and initializer list (5) constructors: average case linear, worst case quadratic.

See also

  • 9316991614 2018-02-25
  • 191841613 2018-02-25
  • 16411612 2018-02-25
  • 6081981611 2018-02-25
  • 1784561610 2018-02-25
  • 4651609 2018-02-25
  • 9348111608 2018-02-25
  • 2513771607 2018-02-25
  • 6478461606 2018-02-24
  • 4985791605 2018-02-24
  • 5637141604 2018-02-24
  • 282181603 2018-02-24
  • 6217941602 2018-02-24
  • 5076141601 2018-02-24
  • 714281600 2018-02-24
  • 6607141599 2018-02-24
  • 949041598 2018-02-24
  • 6809961597 2018-02-24
  • 671871596 2018-02-24
  • 7107821595 2018-02-24