Хороший вопрос ... у этого есть много решений, потому что этот тип проблемы приходит
много раз в графических и научных приложениях.
В зависимости от решения, которое вам требуется, оно может быть довольно сложным под капотом, в этом
код без регистра не обязательно означает быстрее.
"но это делает его довольно утомительным для использования" --- обычно вы можете обойти это,
typedefs или классы-оболочки (в этом случае рекомендуется использовать оболочки).
Если вам не нужно использовать координаты 3D каким-либо пространственно значимым способом (
такие вещи, как «дать мне все точки на расстоянии X от точки P»), то я предлагаю вам
просто найдите способ хеширования каждой точки и используйте одну хэш-карту ... O (n) создание, O (1)
доступ (проверка, если он был обработан), вы не можете сделать намного лучше, чем это.
Если вам нужна дополнительная пространственная информация, вам понадобится контейнер, который явно принимает
это во внимание.
Тип контейнера, который вы выберете, будет зависеть от вашего набора данных. Если у вас есть хорошо
знание диапазона значений, которые вы получите, поможет вам.
Если вы получаете хорошо распределенные данные в известном диапазоне ... используйте octree .
Если у вас есть дистрибутив, который имеет тенденцию к кластеризации, то используйте k-d trees . Тебе понадобиться
восстановить дерево k-d после ввода новых координат (не обязательно каждый раз,
только когда это становится чрезмерно несбалансированным). Проще говоря, Kd-деревья похожи на Octrees, но с неравномерным делением.