C++set容器-内置类型指定排序
Posted 唐火
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++set容器-内置类型指定排序相关的知识,希望对你有一定的参考价值。
set容器排序
利用访函数,可以改变排序规则
一、set存放内置数据类型
代码如下:
#include <iostream>
using namespace std;
#include <set>
class Mycompare
public:
bool operator()(int v1, int v2)
return v1 > v2;
;
//set容器排序
void test01()
set<int >s1;
s1.insert(10);
s1.insert(20);
s1.insert(30);
s1.insert(50);
s1.insert(40);
for (set<int >::iterator it = s1.begin(); it != s1.end(); it++)
cout << *it << " ";
cout << endl;
//指定排序规则
set<int, Mycompare >s2;
s2.insert(10);
s2.insert(20);
s2.insert(30);
s2.insert(50);
s2.insert(40);
for (set<int, Mycompare>::iterator it = s2.begin(); it != s2.end(); it++)
cout << *it << " ";
cout << endl;
int main()
test01();
return 0;
结果:
二、set存放自定义数据类型
代码如下:
#include <iostream>
using namespace std;
#include <set>
#include <cstring>
//set容器排序,存放自定义类型
class Person
public:
Person(string name, int age)
this->m_Name = name;
this->m_Age = age;
string m_Name;
int m_Age;
;
class comparePerson
public:
bool operator()(const Person &p1, const Person &p2)
//按照年龄 降序
return p1.m_Age > p2.m_Age;
;
void test01()
//自定义数据类型 都会指定排序规则
set<Person, comparePerson>s;
Person p1("刘备", 28);
Person p2("关羽", 26);
Person p3("张飞", 24);
Person p4("马超", 22);
Person p5("赵云", 21);
s.insert(p1);
s.insert(p2);
s.insert(p3);
s.insert(p4);
s.insert(p5);
for (set<Person, comparePerson>::iterator it = s.begin(); it != s.end(); it++)
cout << "姓名:" << it->m_Name << " " << "年龄:" << it->m_Age << endl;
int main()
test01();
return 0;
总结:
对于自定义数据类型,set必须指定排序规则才可以插入数据
以上是关于C++set容器-内置类型指定排序的主要内容,如果未能解决你的问题,请参考以下文章