Полезный макрос

Правка ru3, от BekzhanKassenov, 2015-12-28 18:30:15

Привет, сообщество и с наступающим Новым Годом!

Решая одну задачу, придумал интересный макрос, позволяющий сортировать объекты по определенному полю. Получается очень лаконично, но требует 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++, макрос, сортировка

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en3 Английский BekzhanKassenov 2015-12-29 09:39:19 14 Tiny change: ' by(x) [](auto a, auto b) { retu' -> ' by(x) [](const auto& a, const auto& b) { retu'
ru4 Русский BekzhanKassenov 2015-12-29 09:39:03 14
en2 Английский BekzhanKassenov 2015-12-28 18:31:44 190
ru3 Русский BekzhanKassenov 2015-12-28 18:30:15 168
ru2 Русский BekzhanKassenov 2015-12-28 15:35:14 9 Мелкая правка: 'ртировать классы по опред' -> 'ртировать объекты по опред' (опубликовано)
en1 Английский BekzhanKassenov 2015-12-28 15:34:46 422 Initial revision for English translation
ru1 Русский BekzhanKassenov 2015-12-28 15:32:07 503 Первая редакция (сохранено в черновиках)