您可以通过手动,以构建反向范围std::reverse_iterator上的结果std::begin和std::end.
奇怪的是,没有标准的工厂功能reverse_iterator.如果有,它可能看起来像这样:
template< typename iter >
std::reverse_iterator< iter > reverse( iter i )
{ return { i }; }
Run Code Online (Sandbox Code Playgroud)
有了这个,你就可以做到
std::sort( reverse( std::end( my_array ) ), reverse( std::begin( my_array ) ) );
Run Code Online (Sandbox Code Playgroud)
这个例子省去了指定std::greater比较器的麻烦,但是reverse_iterator如果编译器无法从内部循环中删除增加的复杂性,则可能会对性能产生负面影响.