memgraph/data_structures/kdtree/kdtree.hpp
2015-06-19 10:04:42 +02:00

44 lines
707 B
C++

#ifndef GEOAPI_KDTREE_KDTREE_HPP
#define GEOAPI_KDTREE_KDTREE_HPP
#include <vector>
#include "build.hpp"
#include "nns.hpp"
namespace kd
{
template <class T, class U>
class KdTree
{
public:
KdTree() {}
template <class It>
KdTree(It first, It last);
const U& lookup(const Point<T>& pk) const;
protected:
std::unique_ptr<KdNode<float, U>> root;
};
template <class T, class U>
const U& KdTree<T, U>::lookup(const Point<T>& pk) const
{
// do a nearest neighbour search on the tree
return kd::nns(pk, root.get())->data;
}
template <class T, class U>
template <class It>
KdTree<T, U>::KdTree(It first, It last)
{
root.reset(kd::build<T, U, It>(first, last));
}
}
#endif