21xrx.com
2024-11-03 21:42:45 Sunday
登录
文章检索 我的文章 写文章
C++ sort函数中的cmp函数详解
2023-07-08 06:31:57 深夜i     --     --
C++ sort函数 cmp函数 详解

C++ 中的 sort 函数是一个常用的排序函数,可以对各种数据结构进行排序操作。sort 函数有一个比较函数,即 cmp 函数,用于自定义排序规则。本文将详细探讨 cmp 函数的使用。

cmp 函数定义

C++ 中的 cmp 函数是一个通过指针调用的函数,用于比较两个元素的大小关系。cmp 函数必须返回一个布尔值, 当 cmp(a,b) 返回 true 时, a 小于 b,反之则 b 小于等于 a。

bool cmp(const int &a, const int &b)

  return a < b;

在上面的例子中,cmp 函数比较两个整数 a 和 b,如果 a 小于 b ,则返回 true ,否则返回 false 。

指定 cmp 函数

sort 函数默认使用 std::less 来进行比较,即按升序排序。如果想按照其他方式进行排序,则需要指定自定义的 cmp 函数。sort 函数使用方式如下:

#include

#include

using namespace std;

bool cmp(const int &a, const int &b)

  return a < b;

int main() {

  vector nums = 1;

  sort(nums.begin(), nums.end(), cmp);

  return 0;

}

在上面的例子中,我们定义了一个包含 5 个元素的 vector ,并使用 cmp 函数给它进行排序。sort 函数需要传入三个参数:要排序的起始和结束位置的迭代器,以及 cmp 函数的指针。

使用 lambda 表达式

在 C++11 中,可以使用 lambda 表达式来定义 cmp 函数。lambda 表达式可以捕获上下文中的变量,因此在某些情况下可能更加方便。

#include

#include

using namespace std;

int main() {

  vector nums = 2;

  sort(nums.begin(), nums.end(), [](const int &a, const int &b)

    return a > b;

  );

  return 0;

}

在上面的例子中,我们使用了一个冒号来引入 lambda 表达式, [] 中的变量表示可以捕获外部变量。当然,在这个例子中,我们没有使用外部变量,因此可以省略捕获列表。

总结

C++ 中的 sort 函数是一个很常用的排序函数,可以对各种数据结构进行排序操作。排序规则由 cmp 函数来定义,可以自定义排序规则。大家在使用 sort 函数时,需要注意其 API,灵活运用 cmp 函数来满足自己的需求。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复