Похожие действия над членами класса
От: steep8  
Дата: 08.09.15 06:45
Оценка:
Есть допустим класс
Point {
    int x;
    int y;
};

И есть две функции, которые обрабатывают вектор Point
typedef std::vector<Point> Points;

void processPointsX(Points& points) {
    std::sort(points.begin(), points.end(), [](const Point& lhs, const Point& rhs) {return lhs.x < rhs.x;});
    for (auto point: points) {
    if (point.x < SIZE) {
        point.x = SIZE;
    }
    ....
}

void processPointsY(Points& points) {
    std::sort(points.begin(), points.end(), [](const Point& lhs, const Point& rhs) {return lhs.y < rhs.y;});
    for (auto point: points) {
    if (point.y < SIZE) {
        point.y = SIZE;
    }
    ....
}

Функции похожи и захотелось избавить от копи-паста, но пока не понятно как сделать это попроще.
По идее можно вынести из сортировки функтор сравнения в параметры функции, но что далать далее с if...
Или может проще оперировать не координатами точки в функции, а как то обрабатывать Point на другом уровне.
Что то глаз замылился, пока не понял как лучше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.