int main() { const size_t N = 1000; std::list<Point_d> points; points.push_back(Point_d(0,0)); Tree tree; Random_points_iterator rpg; //inserting N points one-by-one, thus the use of "reserve" is recommended, and we use it tree.reserve(N); //to test wether the tree.capacity() function works properly. if( tree.capacity() < N) { std::cerr << "ERROR: Something is wrong with allocating points memory." << std::endl; return -1; } for(size_t i = 0; i < N; i++) { tree.insert(*rpg++); } std::list<Point_d> result; // define range query Point_d p(0.2, 0.2); Point_d q(0.7, 0.7); // Searching an exact range // using default value 0.0 for epsilon fuzziness parameter // Fuzzy_box exact_range(r); replaced by Fuzzy_iso_box exact_range(p,q); std::cout << "tree.search(..)" << std::endl; //tree.report_all_points(std::ostream_iterator<Point>(std::cout,"\n")); tree.search( std::back_inserter( result ), exact_range); std::cout << "The points in the box [0.2,0.7]x[0.2,0.7] are: " << std::endl; std::copy (result.begin(), result.end(), std::ostream_iterator<Point_d>(std::cout,"\n") ); std::cout << std::endl; result.clear(); // Searching a fuzzy range // using value 0.1 for fuzziness paramater Fuzzy_iso_box approximate_range(p, q, 0.1); tree.search(std::back_inserter( result ), approximate_range); std::cout << "The points in the fuzzy box [<0.1-0.3>,<0.6-0.9>]x[<0.1-0.3>,<0.6-0.9>] are: " << std::endl; std::copy (result.begin(), result.end(), std::ostream_iterator<Point_d>(std::cout,"\n") ); std::cout << std::endl; return 0; }
int main() { const int N=1000; // generator for random data points in the square ( (-1,-1), (1,1) ) Random rnd(0); Random_points_iterator rpit(1.0, rnd); // Insert also the N points in the tree Tree tree(N_Random_points_iterator(rpit,0), N_Random_points_iterator(N)); // define exact circular range query Point center(0.2, 0.2); Fuzzy_circle exact_range(center, 0.2); std::list<Point> result; tree.search(std::back_inserter( result ), exact_range); std::cout << "\nPoints in cirle with center " << center << " and radius 0.2" << std::endl; std::list<Point>::iterator it; for (it=result.begin(); (it != result.end()); ++it) { std::cout << *it << std::endl; } result.clear(); // approximate range searching using value 0.1 for fuzziness parameter Fuzzy_circle approximate_range(center, 0.2, 0.1); tree.search(std::back_inserter( result ), approximate_range); std::cout << "\n\nPoints in cirle with center " << center << " and fuzzy radius [0.1,0.3]" << std::endl; for (it=result.begin(); (it != result.end()); ++it) { std::cout << *it << std::endl; } std::cout << "\ndone" << std::endl; return 0; }
int main() { const int N = 1000; std::list<Point_d> points; points.push_back(Point_d(0,0)); Tree tree; Random_points_iterator rpg; for(int i = 0; i < N; i++){ tree.insert(*rpg++); } std::list<Point_d> result; // define range query Point_d p(0.2, 0.2); Point_d q(0.7, 0.7); // Searching an exact range // using default value 0.0 for epsilon fuzziness paramater Fuzzy_iso_box exact_range(p,q); tree.search( std::back_inserter( result ), exact_range); std::cout << "The points in the box [0.2, 0.7]^2 are: " << std::endl; std::copy (result.begin(), result.end(), std::ostream_iterator<Point_d>(std::cout,"\n") ); std::cout << std::endl; result.clear(); // Searching a fuzzy range // using value 0.1 for fuzziness paramater Fuzzy_iso_box approximate_range(p, q, 0.1); tree.search(std::back_inserter( result ), approximate_range); std::cout << "The points in the fuzzy box [[0.1, 0.3], [0.6, 0.9]]^2 are: " << std::endl; std::copy (result.begin(), result.end(), std::ostream_iterator<Point_d>(std::cout,"\n") ); std::cout << std::endl; return 0; }