У меня небольшая проблема с пользовательскими строками сортировки. В основном у меня есть std::list
из std::pair
, элементы которого enum class
и std::string
. Enum - для цветов (которые сортируют правильно), а строки содержат числа с интервалом [2, 10], с добавлением букв J, Q, K и A соответственно. Как вы, возможно, уже догадались, это колода карт, которая после сортировки должна выглядеть так:
2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A.
Как должна выглядеть моя лямбда-функция для достижения этой цели? Или есть другой способ?
Это то, с чем я до сих пор соревновался:
enum class Colours
{
Spades, Clubs, Hearts, Diamonds
};
typedef std::list<std::pair<Colours, std::string>> Deck;
typedef std::pair<Boje, std::string> Pair;
А вот фактическая сортировка:
deck.sort( [] (const Pair &x, const Pair &y) -> bool {
if(x.first == y.first) return x.second < y.second;
else return x.first < y.first;
} );
А текущий результат сортировки: 10 2 3 4 5 6 7 8 9 A J K Q