21xrx.com
2024-05-09 15:00:41 Thursday
登录
文章检索 我的文章 写文章
C++排序容器:让数据按照自定规则快速排序
2023-07-10 19:25:54 深夜i     --     --
C++ 排序容器 数据 自定规则 快速排序

C++中的排序容器是一种能够以快速而高效的方式对数据进行排序的工具,它能够让数据以自定规则进行排序,具有广泛的应用场景。在大多数情况下,C++中的排序容器使用的都是标准库中的sort()函数。

sort()函数是C++中最常用的数据排序函数之一,它可以方便地对数组或容器中的元素进行升序或降序排列。sort()函数的完整参数如下:


sort(startIter, endIter, cmp);

其中,startIter和endIter分别表示待排序元素的起始和结束位置,cmp是自定义的比较函数。一个基本的排序容器代码实现如下所示:


#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

bool cmp(int a, int b)

  return a > b;  // 以降序排序

int main() {

  vector<int> vec = 5;

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

  for (int i : vec)

    cout << i << " ";

  

  return 0;

}

在上面的代码实现中,我们定义了一个vector容器vec,并且给它初始化了一些数据。接着,我们使用sort()函数对其进行排序,并且使用自定义的比较函数cmp以降序的形式排序(默认情况下sort()函数进行的是升序排序)。最后,使用for循环遍历输出排好序的元素即可。

除了使用自定义的比较函数,sort()函数还可以用来排序对象,只需要重载运算符即可。具体来说,我们需要在类定义中重载“小于”运算符(operator<),然后在sort()函数中使用即可。一个对象排序的示例代码如下所示:


#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

class Person {

public:

  int age;

  string name;

  bool operator< (const Person &p) const

    return age < p.age; // 按照年龄进行排序

  

};

int main() {

  vector<Person> vec = {25, 33, 18};

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

  for (Person p : vec)

    cout << p.name << " " << p.age << endl;

  

  return 0;

}

在上面的代码实现中,我们定义了一个名为Person的类,其中包含了年龄(age)和名字(name)两个数据成员。接着,我们在类定义中重载了小于运算符,以年龄作为排序依据。最后,我们给Person类实例化了一个vector容器vec,并且以默认的升序形式对其进行了排序,使用for循环遍历输出排好序的元素即可。

C++中的排序容器是一种基于sort()函数的快速排序工具,可以应用于各种数据类型的排序工作。在代码实现过程中需要定义自定义的比较函数或者重载“小于”运算符,然后使用sort()函数对数据进行排序,以达到所需要的排序结果。

  
  

评论区

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