Я хотел бы создать карту STL, чтобы определить, достаточно ли близок элемент к другому элементу в трехмерном пространстве.До сих пор мой «менее чем функтор» работал довольно хорошо, вставил по следующей ссылке:
Теперь эта проблема не совсем проблема «ближайшего соседа».Скорее это проблема «есть ли сосед на некотором расстоянии».
Мой пример показывает только одно измерение.Я пропустил измерения Y / Z для ясности.
Моя попытка до сих пор :
class ApproximateLessFunctor {
public:
ApproximateLessFunctor( float fudgeFactor ) :
mFudgeFactor( fudgeFactor ) {};
bool operator()( float a, float b ) const {
return (a < (b - mFudgeFactor) );
}
float mFudgeFactor;
};
typedef map<float, int, ApproximateLessFunctor> XAxisMap;
class XAxis {
public:
XAxisMap vMap;
XAxis(ApproximateLessFunctor functor, float x, int v)
: vMap( functor )
{
vMap.insert(make_pair(x, v));
}
};
В редких случаях, и я имею в виду - действительно очень редко -карты не находят подходящую запись, когда позиции перекрываются.
Есть ли что-то, что я могу сделать лучше, чтобы реализовать это, все еще используя контейнеры STL?