C++ Unordered_set Library - emplace


It inserts a new element in the unordered_set if its value is unique. This new element is constructed in place using args as the arguments for the element's constructor.


Following is the declaration for std::unordered_set::emplace.


template <class... Args>
pair <iterator,bool> emplace ( Args&&... args );


args − These arguments passed to the constructor.

Return value

It returns if the function successfully inserts the element (because no other element existed with the same value), the function returns a pair with an iterator to the newly inserted element and a value of true.


Exception is thrown if any element comparison object throws exception.

Please note that invalid arguments cause undefined behavior.

Time complexity

constant time.


The following example shows the usage of std::unordered_set::emplace.

#include <iostream>
#include <string>
#include <unordered_set>

int main () {
   std::unordered_set<std::string> myset;

   myset.emplace ("kittu");
   myset.emplace ("prasad");
   myset.emplace ("sairamkrishna");

   std::cout << "myset containing:";
   for (const std::string& x: myset) std::cout << " " << x;

   std::cout << std::endl;
   return 0;

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

myset containing: sairamkrishna prasad kittu