Я использую следующее, и это кажется многословным.Мне интересно, можно ли его сократить и все же выполнить то же самое.Пожалуйста, предположим, что все переменные инициализируются соответствующими значениями.
if (direction < 0) {
std::stable_sort(ndx, ndx + Rows, [OffsetCol](long lhs, long rhs) {return CompareVariantsDescending(OffsetCol + lhs, OffsetCol + rhs);});
} else {
std::stable_sort(ndx, ndx + Rows, [OffsetCol](long lhs, long rhs) {return CompareVariantsAscending(OffsetCol + lhs, OffsetCol + rhs);});
}
Я думал добавить direction
в список лямбда-захвата и использовать его в теле лямбда-выражения.Но мне кажется, что это было бы неэффективно, поскольку решение о том, какой способ сортировки будет оцениваться при каждом свопе, а не до начала сортировки.
Я также думал о версии троичного оператора, но этосделать для одной очень длинной строки кода.
Есть ли другой вариант?