admin管理员组文章数量:1623804
1.sort函数
对迭代器范围内进行排序,默认升序(使用less);
自定义排序需要定义一个函数
2.priority_queue
默认大顶堆(使用less),自定义比较时需要指定容器类型(容器类型需要有能够随机访问的迭代器,所以不能使用list)
自定义排序需要重载() 运算符
3.set
set和multiset 底层数据结构为红黑树,默认由小到大排序(使用less)
自定义排序需要重载"()" 运算符 或者 重载“<”
#include<iostream>
#include<vector>
#include<queue>
#include <iostream>
#include <fstream>
#include <string>
#include <set>
#include <list>
#include <algorithm>
#include <functional>
#include <unordered_set>
using namespace std;
template<typename T>
void print(T &container){
for (auto &item : container){
cout << item << " ";
}
cout << endl;
}
template<typename T>
void print_q(T &q){
while (!q.empty()){
cout << q.top() << " ";
q.pop();
}
cout << endl;
}
//for sort
bool cmp_sort(int a, int b){
return a < b;
}
//for priority_queue
struct cmp_q{
bool operator()(int a, int b){
return a < b;
}
};
int main(){
cout << "Origin:"<<endl;
vector<int> vec{ 4, 7, 8, 2, 1 };
print(vec);
cout << "Sort: " << endl;
cout << "1) defult :";
sort(vec.begin(), vec.end());
print(vec);
cout << "2) less<int>() :";
sort(vec.begin(), vec.end(), less<int>());
print(vec);
cout << "3) greator<int>() :";
sort(vec.begin(), vec.end(), greater<int>());
print(vec);
cout << "4) self define :";
sort(vec.begin(), vec.end(), cmp_sort); //也可以用sort(vec.begin(), vec.end(), cmp_q());
print(vec);
//
cout << "Priority Queue:"<<endl;
cout << "1) defult :";
priority_queue<int> q(vec.begin(), vec.end());
print_q(q);
cout << "2) less<int> :";
priority_queue<int, vector<int>, less<int> > q1(vec.begin(), vec.end());
print_q(q1);
cout << "3) greator<int> :";
priority_queue<int, vector<int>, greater<int> > q2(vec.begin(), vec.end());
print_q(q2);
cout << "4) self define :";
priority_queue<int, vector<int>, cmp_q> q4(vec.begin(), vec.end());
print_q(q4);
//
cout << "Set:" << endl;
cout << "1) defult :";
set<int> st(vec.begin(), vec.end());
print(st);
cout << "2) less<int> :";
set<int,less<int> > st2(vec.begin(), vec.end());
print(st2);
cout << "3) greator<int> :";
set<int,greater<int> > st3(vec.begin(), vec.end());
print(st3);
cout << "4) self define :";
set<int, cmp_q > st4(vec.begin(), vec.end());//重载(),也可以重载小于号
print(st4);
return 0;
}
运行结果如下图:
本文标签: 方法自定义函数priorityqueueset
版权声明:本文标题:C++ priority_queue、set、sort函数排序方法及自定义方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728897342a1178579.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论