std::flat_set — sorted set backed by a vector.
1#include <flat_set>23std::flat_set<int> fs;45// Insert6fs.insert(3);7fs.insert(1);8fs.insert(4);9fs.insert(1); // Ignored (duplicate)10// fs = {1, 3, 4}1112// Search: O(log n)13if (fs.contains(3)) { /* found */ }14auto it = fs.find(3);1516// Lower/upper bound17auto lb = fs.lower_bound(2); // Points to 318auto ub = fs.upper_bound(2); // Points to 31920// Erase21fs.erase(3);2223// Iteration (sorted)24for (int x : fs) {25 std::cout << x << " ";26}2728// Capacity29std::cout << fs.size(); // Number of elements30std::cout << fs.capacity(); // Allocated space31std::cout << fs.empty(); // Is empty3233// Underlying vector34const auto& v = fs.containers();
Performance: