std::unordered_set Basic Usage & Example

std::unordered_set is an STL container and its introduced in C++11. It provides a functionality of a Set i.e. it can contains the unique elements only. unordered_set stores the elements internally using a Hash Table.

We can declare an unordered_set of a particular type only i.e.

std::unordered_set<T> setOfTypeT;

Elements of Type with which an unoredered_set is declared can only be added in it. Also, all elements of Type T should be,

  • Copyable or Movable
  • Comparable

Above requirements are because of the reason that element added in unordered_set will act as both key and value for internal Hash Table. As it’s a key therefore it should be comparable and copy-able.

Also, all elements in the unordered_set are immutable i.e. they can not be modified once inserted. They can only be deleted after the insertion.


Header File Required is,

#include <unordered_set>

Creating and using an std::unordered_set of std::string

As all objects of type std::string is copy-able and comparable. So, let’s create an unordered_set of type std::string and use it i.e.

std::unordered_set<std::string> setOfStrs;

Here, as we have declared an unordered set of type std::string. It means it can only store unique strings. Let’s see a complete example,
#include <iostream>
#include <unordered_set>
#include <algorithm>

int main() {

	// Creating an Unoredered_set of type string
	std::unordered_set<std::string> setOfStrs;

	// Insert strings to the set

	// Try to Insert a duplicate string in set

	// Iterate Over the Unordered Set and display it
	for (std::string s : setOfStrs)
		std::cout << s << std::endl;



Here we added 4 elements in the unoredered_set but only 3 will get added, last insertion will not work because “second” is already inserted in set and unoredered_set contains only the unique elements.

[showads ad=inside_post]




Do you want to Learn Modern C++ from best?

We have curated a list of Best C++ Courses, that will teach you the cutting edge Modern C++ from the absolute beginning to advanced level. It will also introduce to you the word of Smart Pointers, Move semantics, Rvalue, Lambda function, auto, Variadic template, range based for loops, Multi-threading and many other latest features of C++ i.e. from C++11 to C++20.

Check Detailed Reviews of Best Modern C++ Courses

Remember, C++ requires a lot of patience, persistence, and practice. So, start learning today.

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top