#include #include #include #include #include struct Record { int id; std::string label; }; struct ById { bool operator()(const Record& a, const Record& b) const { return a.id < b.id; } }; int main() { std::set records; auto first = records.insert(Record{7, "original"}); auto duplicate = records.insert(Record{7, "replacement"}); assert(first.second && !duplicate.second); assert(duplicate.first->label == "original"); std::map names{{10, "ten"}, {30, "thirty"}}; auto saved = names.find(10); names.emplace(20, "twenty"); assert(saved->second == "ten"); auto boundary = names.lower_bound(15); assert(boundary != names.end() && boundary->first == 20); auto missing = names.find(99); assert(missing == names.end() && names.size() == 3); std::cout << duplicate.first->label << ' ' << boundary->second << '\n'; }