# **[](https://en.cppreference.com/w/cpp/header/set)** is an ordered container of unique elements, maintained in sorted order via a red-black tree. Insertion, deletion, and lookup are O(log n). Use `std::multiset` to allow duplicates. Use `std::set` when you need a sorted unique collection; use `std::unordered_set` if you don't need order. ## Example This example builds a set from a list with duplicates, showing automatic deduplication and sorted iteration. ```cpp // compile: g++ -std=c++11 -o setexample setexample.cpp // run: ./setexample // description: set insertion and iteration #include #include int main() { std::set numbers = {3, 1, 4, 1, 5}; std::cout << "set (duplicates removed): "; for (int x : numbers) std::cout << x << " "; std::cout << "\n"; numbers.insert(2); std::cout << "after insert(2): "; for (int x : numbers) std::cout << x << " "; std::cout << "\n"; return 0; } ```