Я думаю, что вы путаете две части терминологии. В смысле хеш-таблиц есть «сегменты», которые представляют собой некоторые внутренние детали реализации, используемые для равномерного распределения элементов, чтобы при поиске не сканировалось слишком много бесполезных элементов. Существуют также «сегменты» в пространственном смысле, которые представляют собой разбиение пространства на области, так что элементы принадлежат ровно одному сегменту. Как правило, вы сами контролируете пространственную систему группирования (вы можете выбрать, где все разделено), но хеш-таблица не позволит вам точно контролировать сегменты. Вы можете выбрать начальный размер, но если хеш-таблица считает целесообразным увеличить этот размер с целью повышения производительности, она почти наверняка сделает это. Если этого не произойдет, время поиска будет значительно хуже.
Если вы хотите разбить пространство на сетку, а затем распределить точки в этой сетке, лучший способ сделать это - создать двумерный массив (с необработанными массивами или с использованием некоторой линеаризации сетки), равный std::unordered_map
с. каждая из которых просто содержит точки в одной определенной области пространства. Таким образом, если вы хотите найти элемент, вы идете на карту, содержащую точки только для этого сегмента, а затем попросите карту найти значение, после чего она обращается к своей собственной внутренней системе группирования, чтобы найти точку, которую вы хотите найти. хочу. Это означает, что если вы хотите разделить точки так, чтобы вы могли выполнять интересные запросы по областям пространства, точки хранятся в сегментах, специально предназначенных для этих областей, но внутри этих сегментов они хранятся в хеш-таблице для создания поиск этих точек занимает меньше времени.
В качестве альтернативы вы можете рассмотреть возможность использования структуры пространственных данных, таких как дерево квадрантов или дерево kd, которые эффективно хранят элементы и позволяют эффективно запрашивать каждую точку в пространственном сегменте.
Надеюсь, это поможет!