Поиск карты <pair, …> с нижней и верхней границами

#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 компонентом.