Boost logo

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