|
Geometry : |
Subject: [geometry] sort points on single coordinate
From: Hussein Almashouq (hussein.almashouq_at_[hidden])
Date: 2015-07-15 14:11:14
Greeting to all,
Currently I'm using std::sort on boost points on x-coordinte as follows
typedef bg::model::point<long long, 2, bg::cs::cartesian> point;
typedef std::pair<point, long long> value_type;
std::vector<value_type> values;
// for single attribute sort on point data sets
// std::sort needs custom comparison operator
struct PointLessX {
bool operator()(const value_type& p, const value_type& q) const
{
return bg::get<0>(p.first) < bg::get<0>(q.first);
}
};
std::cout << "Sorting the data " << std::endl;
PointLessX x;
std::sort(values.begin(), values.end(), x);
The above code is working fine but a bit slow when the # of points exceeds
10M.
I looked at boost sort package and it seems it overcomes this issue
http://www.boost.org/doc/libs/1_58_0/libs/sort/doc/html/index.html#sort.overview.intro
However , I could not figure out how to adapt it to sort my boost points
which are of value type long. It seem that I have to define some bit shift
operator.
Any suggestion please ?
Hussein Almashouq
-- ------------------------------ This message and its contents, including attachments are intended solely for the original recipient. If you are not the intended recipient or have received this message in error, please notify me immediately and delete this message from your computer system. Any unauthorized use or distribution is prohibited. Please consider the environment before printing this email.
Geometry list run by mateusz at loskot.net