#ifndef_VPTREE_HEADER_
#define_VPTREE_HEADER_
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<stdio.h>
#include<queue>
#include<limits>
template<typenameT,double(*distance)(constT&,constT&),int(*getId)(constT&)>
classVpTree
{
public:
VpTree():_root(0){}
~VpTree(){
delete_root;
}
voidcreate(conststd::vector<T>&items){
delete_root;
_items=items;
_root=buildFromPoints(0,items.size());
}
voidsearch(constT&target,intk,std::vector<T>*results,std::vector<double>*distances)