1.sort 用内置头文件的排序方式来排序
#include<algorithm>
#include<functional>//内置排序方式的头文件
using namespace std;
sort(a,a+n,greater<int >())//降序来排列
sort(a,a+n,less<int> ()) //升序来排列
2结构体内部重载
#include<algorithm>
#include<vector>
struct node{
int num;
char name[20];
friend bool operator <(node a ,node b){
if(strcmp(a.name,b.name)==0)
return a.num<b.num;
}
};
vector <node> v;
sort(v.begin(),v.end())
//优先队列就不用用sort了,因为放进去之后结构体内部重载就已经确定好优先级了
上面的也可以直接将数据存在结构体数组里面,不过也必须要用sort排个序。
1优先队列普通情况
#include<iostream>
#include<queue>
#include<functional>
using namespace std;
//
//int main()
//{
// priority_queue<int > q;//默认数越大优先级越大
//}
2对于常见的优先队列,内置函数提供了一些简便方法“越小的整数优先级越大的优先队列”
priority_queue<int ,vector<int>,greater<int> >q
其中第一个参数是元素的类型第二个参数是容器的类型,第三个是排序的方法默认为less<int > 是越大的整数优先级越大。
#include<iostream>
#include<queue>
#include<functional>
using namespace std;
struct cmp{//用int &a 是因为元素类型为int
bool operator ()(int &a,int &b){//(const int a,const int b)const {}
return a>b;//等同于greater<int > //最小值优先
}
};
int main()
{
priority_queue<int ,vector<int>,greater<int> >q //前面不用定义vector也可以直接向优先队列里面加元素
//第三个参数的替换cmp
priority_queue<int ,vector<int>,cmp >q
}
3,结构体优先队列,需要在结构体内部重载‘<’,之前博客里面写过,有兴趣的话可以看一下