sort函数的第三个参数如何工作?

时间:2017-01-18 03:45:18

标签: c++ sorting

我在理解如何使函数在C ++中对变量进行排序时遇到问题。

例如,使用此功能:

sort(myvector.begin(), myvector.end(), comp)

为什么我使用以下comp函数,sort函数使向量反转?

bool comp (int i, int j) { 
    return true; 
}

为什么我使用以下comp函数,sort函数按递减顺序对向量进行排序?

bool comp (int i, int j) { 
    return i > j; 
}

2 个答案:

答案 0 :(得分:2)

comp是一个二元函数,它接受范围中的两个元素作为参数,并返回一个可转换为bool的值。返回的值表示作为第一个参数传递的元素是否被认为是在它定义的特定严格弱顺序中的第二个参数之前。

您可以参考cplusplus

答案 1 :(得分:-1)

  

为什么我使用以下comp函数,sort函数使向量反转?

     

OkHttp version: 2.5.0 Glide version: 3.6.1

理想情况下,上面的代码不应该编译,因为你没有使用传递给comp函数的参数。

提出你的问题,std :: sort中的第三个参数提供了一种提供自定义比较器的方法,以便在排序时调用提供的比较器来比较向量的元素。

bool comp (int i, int j) { 
      return true; 
  }

使用上述内容时,只有当第一项大于第二项时,比较器才返回true。当比较器返回true时,sort函数会采取措施将元素return i > j; 放在元素i之前。因此,您会看到矢量按降序排列。