21xrx.com
2024-09-20 00:49:14 Friday
登录
文章检索 我的文章 写文章
C++ set排序技巧
2023-07-04 08:52:50 深夜i     --     --
C++ set 排序 技巧

C++ set是一种非常方便的STL容器,但是其排序方式可能会让人感到有些困惑。因此,本篇文章将为大家介绍一些使用set进行排序的技巧。

1. 默认排序方式

在set中,默认情况下是以升序方式进行排序的。在实际代码中,可以通过以下方式定义:


set<int> s; // 定义一个int类型的set,升序排序

2. 自定义排序方式

有时,我们需要根据自定义规则进行排序,可以通过定义函数对象来实现。比如,我们可以定义一个按字符串长度进行降序排序的函数对象:


struct cmp {

  bool operator() (const string& s1, const string& s2) const {

    return s1.length() > s2.length();

  }

};

set<string, cmp> s; // 定义一个字符串类型的set,按字符串长度进行降序排序

3. 多关键字排序

在实际开发中,有时需要按多个关键字进行排序。可以通过以下方式实现:


struct person

  string name;

  int age;

;

bool operator< (const person& p1, const person& p2) {

  if (p1.name == p2.name) return p1.age < p2.age;

  return p1.name < p2.name;

}

set<person> s; // 定义一个person类型的set,以姓名为第一关键字,以年龄为第二关键字进行排序

在以上代码中,我们通过定义一个person结构体来存储人名和年龄信息,并重载了小于运算符来定义多关键字排序方式。

4. 倒序排序

有时我们需要以降序排序的方式进行操作。可以通过以下方式实现:


set<int, greater<int>> s; // 定义一个int类型的set,降序排序

在以上代码中,通过指定greater 为模板参数,表示以降序方式进行排序。

总结:C++ set是一种非常方便的STL容器,可以帮助我们快速地实现排序功能。无论是使用默认方式排序,还是按自定义规则进行排序,set都可以提供非常高效的排序效果。

  
  

评论区

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