Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ Tutorial

C++ HOME C++ Intro C++ Get Started C++ Syntax C++ Output C++ Comments C++ Variables C++ User Input C++ Data Types C++ Operators C++ Strings C++ Math C++ Booleans C++ If...Else C++ Switch C++ While Loop C++ For Loop C++ Break/Continue C++ Arrays C++ Structures C++ Enums C++ References C++ Pointers

C++ Functions

C++ Functions C++ Function Parameters C++ Function Overloading C++ Scope C++ Recursion

C++ Classes

C++ OOP C++ Classes/Objects C++ Class Methods C++ Constructors C++ Access Specifiers C++ Encapsulation C++ Inheritance C++ Polymorphism C++ Files C++ Exceptions C++ Date

C++ Data Structures

C++ Data Structures & STL C++ Vectors C++ List C++ Stacks C++ Queues C++ Deque C++ Sets C++ Maps C++ Iterators C++ Algorithms

C++ How To

C++ Add Two Numbers C++ Random Numbers

C++ Reference

C++ Reference C++ Keywords C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ Examples

C++ Examples C++ Real-Life Examples C++ Compiler C++ Exercises C++ Quiz C++ Syllabus C++ Certificate


C++ Sets


C++ Set

A set stores unique elements where they:

  • Are sorted automatically in ascending order.
  • Are unique, meaning equal or duplicate values are ignored.
  • Can be added or removed, but the value of an existing element cannot be changed.
  • Cannot be accessed by index numbers, because the order is based on sorting and not indexing.

To use a set, you have to include the <set> header file:

// Include the set library
#include <set>

Create a Set

To create a set, use the set keyword, and specify the type of values it should store within angle brackets <> and then the name of the set, like: set<type> setName.

Example

// Create a set called cars that will store strings
set<string> cars;

If you want to add elements at the time of declaration, place them in a comma-separated list, inside curly braces {}:

Example

// Create a set called cars that will store strings
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Print set elements
for (string car : cars) {
  cout << car << "\n";
}

The output will be:

BMW
Ford
Mazda
Volvo
Try it Yourself »

As you can see from the result above, the elements in the set are sorted automatically. In this case, alphabetically, as we are working with strings.

If you store integers in the set, the returned values are sorted numerically:

Example

// Create a set called numbers that will store integers
set<int> numbers = {1, 7, 3, 2, 5, 9};

// Print set elements
for (int num : numbers) {
  cout << num << "\n";
}

The output will be:

1
2
3
5
7
9
Try it Yourself »

Note: The type of the set (e.g. string and int in the examples above) cannot be changed after its been declared.


Sort a Set in Descending Order

By default, the elements in a set are sorted in ascending order. If you want to reverse the order, you can use the greater<type> functor inside the angle brackets, like this:

Example

// Sort elements in a set in descending order
set<int, greater<int>> numbers = {1, 7, 3, 2, 5, 9};
// Print the elements
for (int num : numbers) {
  cout << num << "\n";
}

The output will be:

9
7
5
3
2
1
Try it Yourself »

Note: The type specified in greater<type> must match the type of elements in the set (int in our example).



Unique Elements

Elements in a set are unique, which means they cannot be duplicated or equal.

For example, if we try to add "BMW" two times in the set, the duplicate element is ignored:

Example

set<string> cars = {"Volvo", "BMW", "Ford", "BMW", "Mazda"};

// Print set elements
for (string car : cars) {
  cout << car << "\n";
}

The output will be:

BMW
Ford
Mazda
Volvo
Try it Yourself »

Add Elements

To add elements to a set, you can use the .insert() function:

Example

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Add new elements
cars.insert("Tesla");
cars.insert("VW");
cars.insert("Toyota");
cars.insert("Audi");
Try it Yourself »

Remove Elements

To remove specific elements from a set, you can use the .erase() function:

Example

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Remove elements
cars.erase("Volvo");
cars.erase("Mazda");
Try it Yourself »

To remove all elements from a set, you can use the .clear() function:

Example

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Remove all elements
cars.clear();
Try it Yourself »

Find the Size of a Set

To find out how many elements a set has, use the .size() function:

Example

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size();  // Outputs 4
Try it Yourself »

Check if a Set is Empty

Use the .empty() function to find out if a set is empty or not.

The .empty() function returns 1 (true) if the set is empty and 0 (false) otherwise:

Example

set<string> cars;
cout << cars.empty();  // Outputs 1 (The set is empty)
Try it Yourself »

Example

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty();  // Outputs 0 (not empty)
Try it Yourself »

Loop Through a Set

You can loop through a set with the for-each loop:

Example

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (string car : cars) {
  cout << car << "\n";
}
Try it Yourself »

Tip: It is also possible to loop through sets with an iterator, which you will learn more about in a later chapter.




×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.