在 C++ 中,以相反顺序排序的最快方法是什么?

In c++, what is the fastest way to sort in reverse order?

本文关键字:方法 是什么 排序 顺序 C++      更新时间:2023-10-16

是以下之一还是其他原因?

//1
sort(first,last,[](const T &a,const T &b){return comp(b,a);});
//2
sort(first,last,bind(comp,ref(_2),ref(_1));
//3
sort(make_reverse_iterator(last),make_reverse_iterator(first),comp);
//Use value instead of reference if object size is small.

这不是按降序对向量进行排序的副本,这是考虑用户定义的比较函数。

没有比简单地反转比较器更简单的方法了。如果比较器在比较AB时返回true,则改为返回false,反之亦然。

确保处理AB相等的情况;在这种情况下,您希望比较器仍返回false

顺便说一句,当你这样做时,它不会变得更快。

基准测试显示使用 lambda 比其他两个快得多。