Привет, сообщество и с наступающим Новым Годом!
Решая одну задачу, придумал интересный макрос, позволяющий сортировать объекты по определенному полю. Получается очень лаконично, но требует 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) [](const auto& a, const auto& b) { return a.x < b.x; }
sort(arr, arr + N, by(a));