Ответ 1
Вы можете построить обратный диапазон вручную, используя std::reverse_iterator
по результатам std::begin
и std::end
.
Как ни странно, для reverse_iterator
нет стандартной функции factory. Если бы это было возможно, это выглядело бы так:
template< typename iter >
std::reverse_iterator< iter > reverse( iter i )
{ return { i }; }
Вооружившись этим, вы можете сделать
std::sort( reverse( std::end( my_array ) ), reverse( std::begin( my_array ) ) );
В этом примере не удается определить компаратор std::greater
, но reverse_iterator
предположительно может отрицательно повлиять на производительность, если компилятор не сможет удалить добавленную сложность из внутренних циклов.