set容器的排序
内置数据类型的排序规则
#include<iostream>
#include<string>
#include <set>
using namespace std;
class MyCompare {
public:
bool operator()(int v1, int v2) {
return v1 > v2;
}
};
void test01() {
set<int> s;
s.insert(88);
s.insert(-9);
s.insert(1);
s.insert(98);
s.insert(909);
for (set<int>::iterator it = s.begin(); it != s.end(); it++) {
cout << *it << " ";
}
cout << endl;
set<int,MyCompare> s2;
s2.insert(88);
s2.insert(-9);
s2.insert(1);
s2.insert(98);
s2.insert(909);
for (set<int,MyCompare>::iterator it = s2.begin(); it != s2.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
int main() {
test01();
return 0;
}
自定义数据类型的排序规则
#include<iostream>
#include<string>
#include <set>
using namespace std;
class Person {
public:
Person(string name, int age) {
this->name = name;
this->age = age;
}
string name;
int age;
};
class comparePerson {
public:
bool operator()(const Person &p1, const Person &p2) {
return p1.age > p2.age;
}
};
void test01() {
set<Person,comparePerson> s;
Person p1("刘备", 40);
Person p2("关羽", 20);
Person p3("张飞", 30);
Person p4("诸葛亮", 18);
s.insert(p1);
s.insert(p2);
s.insert(p3);
s.insert(p4);
for (set<Person,comparePerson>::iterator it = s.begin(); it != s.end(); it++) {
cout << "姓名:" << it->name << "\t年龄:" << it->age << endl;
}
}
int main() {
test01();
return 0;
}