Похоже, что вы действительно хотите, это std::multimap
(или std::unordered_multimap
), с отдельными точками в качестве ключей и линиями (pair<point, point>
) в качестве связанных значений. В качестве альтернативы, поскольку ключ содержит первую точку, это можно сделать как std::multimap<point, point>
, чтобы избежать сохранения Point1 дважды, один раз как ключ и снова как часть связанного значения. В любом случае легко найти все линии, которые используют конкретную точку.
Другая возможность (если набор линий достаточно статичен) состоял бы в том, чтобы поместить ваши линейные объекты в вектор, отсортированный по Point1. Это (опять же) позволяет быстро искать все линии, которые включают определенную точку. Преимущество состоит в том, что это уменьшает объем данных, которые необходимо хранить (устраняет указатели между узлами), и в целом повышает скорость поиска. Недостатком является то, что вставка или удаление элементов происходит относительно медленно.