From 138231b24e5f4c7a498a2cf43d57a60ffedb6fb4 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 12 Jul 2006 12:16:36 +0000 Subject: [PATCH] Added an example --- .../examples/Spatial_sorting/sort_indices.cpp | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Spatial_sorting/examples/Spatial_sorting/sort_indices.cpp diff --git a/Spatial_sorting/examples/Spatial_sorting/sort_indices.cpp b/Spatial_sorting/examples/Spatial_sorting/sort_indices.cpp new file mode 100644 index 00000000000..c228e34dbe5 --- /dev/null +++ b/Spatial_sorting/examples/Spatial_sorting/sort_indices.cpp @@ -0,0 +1,81 @@ + +#include +#include + + +typedef CGAL::Simple_cartesian K; +typedef K::Point_2 Point_2; +typedef std::vector::iterator Point_iterator; + + + +template +struct Sort_traits_2 { + + typedef Iterator Point_2; + + struct Less_x_2 { + bool operator() (const Point_2 &p, const Point_2 &q) const + { + K k; + std::cout << "compare " << *p << " and " << *q << std::endl; + return k.less_x_2_object() (*p, *q); + } + }; + + Less_x_2 + less_x_2_object() const + { + return Less_x_2(); + } + + struct Less_y_2 { + bool operator() (const Point_2 &p, const Point_2 &q) const + { + K k; + return k.less_y_2_object() (*p, *q); + } + }; + + + Less_y_2 + less_y_2_object() const + { + return Less_y_2(); + } +}; + + +typedef CGAL::Hilbert_sort_2 > Hilbert_sort_2; +typedef CGAL::Multiscale_sort Spatial_sort_2; + + + + +int main () +{ + Spatial_sort_2 sort_2; + + std::vector points; + std::vector iterators; + + Point_2 p; + while(std::cin >> p){ + points.push_back(p); + } + + iterators.reserve(points.size()); + for(Point_iterator it = points.begin(); it != points.end(); ++it){ + iterators.push_back(it); + } + + sort_2(iterators.begin(), iterators.end()); + + for(int i = 0; i < iterators.size(); i++){ + std::cout << *iterators[i] << std::endl; + } + + std::cout << "done" << std::endl; + + return 0; +}