Границы ключа через lower_bound в C++
Упорядоченное дерево std::map позволяет
искать не только точное совпадение, но и
границу между ключами.
Метод lower_bound возвращает итератор на
первый элемент с ключом не меньше заданного.
Метод upper_bound - на первый элемент
со строго большим ключом. Для существующего
ключа lower_bound указывает на пару,
а upper_bound - на следующий ключ
или на end.
Запишем словарь из трех ключей и сравним оба итератора для среднего ключа:
#include <map>
std::map<int, std::string> rows = {{1, "a"}, {3, "b"}, {5, "c"}};
auto lo = rows.lower_bound(3);
auto hi = rows.upper_bound(3);
std::cout << lo->second << "\n";
std::cout << hi->first << "\n";
Постройте словарь из трех целых ключей,
найдите lower_bound и upper_bound для
среднего ключа и выведите значение по
нижней границе и ключ по верхней.