Привет, сообщество и с наступающим Новым Годом!↵
↵
Решая одну задачу, придумал интересный макрос, позволяющий сортировать объекты по определенному полю. Получается очень лаконично, но требует C++11.↵
Собственно, макрос:↵
↵
~~~~~↵
#define by(T, x) [](const T& a, const T& b) { return a.x < b.x; }↵
~~~~~↵
↵
Использование:↵
↵
↵
~~~~~↵
struct Item {↵
int a, b;↵
};↵
↵
sort(arr, arr + N, by(Item, a));↵
~~~~~↵
↵
Полный пример: http://pastebin.com/Cp5ZkwE4.↵
↵
Всем счастливого нового года!↵
↵
**UPD:** В комментариях указали, что C++14 позволяет еще короче:↵
↵
~~~~~↵
#define by(x) [](auto a, auto b) { return a.x < b.x; }↵
sort(arr, arr + N, by(a));↵
~~~~~
↵
Решая одну задачу, придумал интересный макрос, позволяющий сортировать объекты по определенному полю. Получается очень лаконично, но требует C++11.↵
Собственно, макрос:↵
↵
~~~~~↵
#define by(T, x) [](const T& a, const T& b) { return a.x < b.x; }↵
~~~~~↵
↵
Использование:↵
↵
↵
~~~~~↵
struct Item {↵
int a, b;↵
};↵
↵
sort(arr, arr + N, by(Item, a));↵
~~~~~↵
↵
Полный пример: http://pastebin.com/Cp5ZkwE4.↵
↵
Всем счастливого нового года!↵
↵
**UPD:** В комментариях указали, что C++14 позволяет еще короче:↵
↵
~~~~~↵
#define by(x) [](auto a, auto b) { return a.x < b.x; }↵
sort(arr, arr + N, by(a));↵
~~~~~