#c #stl
#c #stl
Вопрос:
Я хотел бы знать, имеет ли какое-либо полезное значение поиск карты, которая принимает пару целых чисел (координат) в качестве ключа с помощью lower_bound и upper_bound?
using Point = std::pair<int, int>;
std::map<Point, Vertex> vertex_map = {};
const auto p = std::make_pair(0, 0);
const auto q = std::make_pair(10, 10);
auto foo = vertex_map.lower_bound(p);
auto bar = vertex_map.upper_bound(q);
В частности, я хотел бы проверить, содержит ли карта какие-либо вершины, связанные данным прямоугольником (p, q).
Ответ №1:
Нет, я не думаю, что это возможно. Вам нужен компаратор, такой, чтобы p < x amp;amp; x < p
iff x
был связан, Rectangle (p, q)
и этот компаратор должен определять строгий слабый порядок
Насколько я могу судить, это невозможно.
Эффективный способ решения этой проблемы заключается в хранении двух списков: один с точками, упорядоченными x
компонентом, а другой с точками, упорядоченными y
компонентом.