Я работаю над алгоритмом, которому постоянно требуется (евклидово) расстояние до k-й ближайшей точки из некоторой заданной точки запроса, взятой из вектора точек. Кроме того, мне постоянно нужно найти все точки в пределах заданного радиуса точки.
Я думаю об использовании деревьев k-d из библиотеки nanoflann. Однако функция knnSearch() возвращает все k ближайших соседей, что мне не нужно. (Хотя функция radiusSearch() меня вполне устраивает).
Есть ли более эффективный способ получить то, что мне нужно, кроме как каждый раз перебирать все k ближайших соседей? Лучшая структура данных или лучшая реализация? (Я использую С++.)