std::map позволяет искать не только точное совпадение, но и границу между ключами. Метод lower_bound возвращает итератор на первый.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpNdBn 175 of 696 menu
◀ ▶

Границы ключа через 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 для среднего ключа и выведите значение по нижней границе и ключ по верхней.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить