C++ Unordered_multimap Library - unordered_multimap() Function


The C++ function std::unordered_multimap::unordered_multimap() constructs an unordered_multimap with as many elements as in range of first to last.


Following is the declaration for std::unordered_multimap::unordered_multimap() function form std::unordered_map() header.


template <class InputIterator>
unordered_multimap(InputIterator first,
                   InputIterator last,
                   size_type n = /* implementation defined */,
                   const hasher& hf = hasher(),
                   const key_equal& eql = key_equal(),
                   const allocator_type& alloc = allocator_type());


  • first − Input iterator to initial position.

  • last − Input iterator to final position.

  • n − Maximum number of initial buckets.

  • eql − Comparision function object that returns true if provided two container objects are to be considered equal.

  • alloc − Allocator to use for all memory allocations of this container.

Return value

Constructor never returns value.

Time complexity

Linear i.e. O(n) in average case.

Quadratic i.e. O(n2) in worst case.


The following example shows the usage of std::unordered_multimap::unordered_multimap() function.

#include <iostream>
#include <unordered_map>

using namespace std;

int main(void) {
   unordered_multimap<char, int> umm1 = {
            {'a', 1},
            {'b', 2},
            {'c', 3},
            {'d', 4},
            {'e', 5}
   unordered_multimap<char, int> umm2(umm1.begin(), umm1.end());

   cout << "Unordered multimap contains following elements" << endl;

   for (auto it = umm2.begin(); it != umm2.end(); ++it)
      cout << it->first << " = " << it->second << endl;

   return 0;

Let us compile and run the above program, this will produce the following result −

Unordered multimap contains following elements
d = 4
e = 5
a = 1
b = 2
c = 3