holyya.com
2025-09-04 16:52:31 Thursday
登录
文章检索 我的文章 写文章
C++中pair类型的排序
2023-07-10 22:40:56 深夜i     --     --
C++ pair类型 排序 STL 比较函数

在C++中,pair是一个很有用的数据类型,它允许将两个不同类型的值组合成一对,这对值可以作为一个单独的实体使用。pair的一个常见的用途是在STL中用作map和set容器的元素类型。当在这些容器中存储pair类型实例时,需要对它们进行排序以便能够有效地进行查找和比较,这就需要对pair类型进行排序。

要对pair类型进行排序,有两种方法:使用自定义比较函数或重载操作符。首先看看如何使用自定义比较函数来对pair类型进行排序。使用自定义比较函数主要涉及到使用STL algorithm库中的sort函数。在使用sort函数时,我们可以将自定义比较函数作为sort函数的第三个参数传递。比如,如果我们想根据pair的第一个元素进行升序排序,我们可以编写以下比较函数:


bool cmp(pair<int, int> a, pair<int, int> b)

  return a.first < b.first;

在这个函数中,我们使用了pair类型的first方法来比较两个pair的第一个元素。然后,将该自定义排序函数作为第三个sort函数参数传递,如下所示:


vector<pair<int, int>> pairs = { 4, 3, 5, 2};

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

这将根据pair的第一个元素进行升序排序,结果为:


1 3

2 4

5 7

6 2

另一种对pair类型进行排序的方法是重载操作符。与使用自定义比较函数时一样,我们需要确定要排序的pair中应该比较哪个元素。使用这种方法,我们只需要为pair类型定义 < 运算符的重载,将排序的标准传递给排序算法即可。例如:


bool operator<(const pair<int, int>& a, const pair<int, int>& b)

  return a.first < b.first;

在这个例子中,我们根据pair的第一个元素对其进行了排序。然后,我们只需要将pairs容器传递给sort函数即可完成排序:


vector<pair<int, int>> pairs = { 4, 3, 5, 6};

sort(pairs.begin(), pairs.end());

这将返回与上述方法结果相同的排列。

无论是使用自定义比较函数还是重载操作符,对pair类型进行排序都是非常简单的。这使得它成为在STL容器中使用时的一个非常有用的工具。

  
  

评论区

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