C++ Unordered_map Library - emplace_hint() Function


The C++ function std::unordered_map::emplace_hint() inserts a new element in unordered_map using hint as a position for element.


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


template <class... Args>
iterator emplace_hint(const_iterator position, Args&&... args);


  • position − Hint for the position to insert element.

  • args − Arguments forwarded to construct the new element.

Return value

Returns an iterator to the newly inserted element. If insertion fails because of already existing element, it returns iterator to the existing element.

Time complexity

Constant i.e. O(1) in average case.

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


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

#include <iostream>
#include <unordered_map>

using namespace std;

int main(void) {
   unordered_map<char, int> um = {
            {'b', 2},
            {'c', 3},
            {'d', 4},

   um.emplace_hint(um.end(), 'e', 5);
   um.emplace_hint(um.begin(), 'a', 1);

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

   for (auto it = um.cbegin(); it != um.cend(); ++it)
      cout << it->first << " = " << it->second << endl;

   return 0;

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

Unordered map contains following elements
a = 1
e = 5
d = 4
b = 2
c = 3
Kickstart Your Career

Get certified by completing the course

Get Started