#ifndef KNN_H #define KNN_H #include #include template class KNN { private: std::vector elems; public: /** add a new element */ void add(const T& elem) { elems.push_back(elem); } void build() {;} /** get the nearest n elements */ template std::vector get(const T2& src, const int num) { auto lambda = [&] (const T& e1, const T& e2) { return e1.getDistance(src) < e2.getDistance(src); }; std::sort(elems.begin(), elems.end(), lambda); std::vector res; for (int i = 0; i < num; ++i) { res.push_back(elems[i]); } return res; } }; #endif // KNN_H