set — sorted unique elements. unordered_set — hash set.
std::set:
1std::set<int> s = {3, 1, 4, 1, 5};2// Iterates: 1, 3, 4, 5 (sorted, unique)
std::unordered_set:
1std::unordered_set<int> us = {3, 1, 4, 1, 5};2// Iterates: 3, 1, 4, 5 (any order, unique)
When to use: