Есть допустим класс
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 на другом уровне.
Что то глаз замылился, пока не понял как лучше.