Код C ++ для сортировки массива индексов по возрастанию и убыванию - PullRequest
0 голосов
/ 16 марта 2019

Я использую следующее, и это кажется многословным.Мне интересно, можно ли его сократить и все же выполнить то же самое.Пожалуйста, предположим, что все переменные инициализируются соответствующими значениями.

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 в список лямбда-захвата и использовать его в теле лямбда-выражения.Но мне кажется, что это было бы неэффективно, поскольку решение о том, какой способ сортировки будет оцениваться при каждом свопе, а не до начала сортировки.

Я также думал о версии троичного оператора, но этосделать для одной очень длинной строки кода.

Есть ли другой вариант?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...