Finding the left-most and right-most points of a list. std::find_if the right way to go?

Posted by Tom on Stack Overflow See other posts from Stack Overflow or by Tom
Published on 2010-04-16T08:31:56Z Indexed on 2010/04/16 8:43 UTC
Read the original article Hit count: 324

Filed under:
|
|
|

Hi,

I have a list of Point objects, (each one with x,y properties) and would like to find the left-most and right-most points. I've been trying to do it with find_if, but i'm not sure its the way to go, because i can't seem to pass a comparator instance. Is find_if the way to go? Seems not. So, is there an algorithm in <algorithm> to achieve this?

Thanks in advance.

#include <iostream>
#include <list>
#include <algorithm>

using namespace std;

typedef struct Point{
        float x;
        float y;
} Point;

bool left(Point& p1,Point& p2)
{
        return p1.x < p2.x;

}
int main(){
        Point p1 ={-1,0};
        Point p2 ={1,0};
        Point p3 ={5,0};
        Point p4 ={7,0};

        list <Point> points;

        points.push_back(p1);
        points.push_back(p2);
        points.push_back(p3);
        points.push_back(p4);

        //Should return an interator to p1.
        find_if(points.begin(),points.end(),left);                                                  

        return 0;
}

© Stack Overflow or respective owner

Related posts about c++

Related posts about stl