3、priority_queue<int, vector<int>, greater<int> > qi2;//从小到大的优先级队列,可将greater改为less,即为从大到小
代码如下:
#include #include #include #include #include using namespace std; priority_queue ,greater > m;//greater从小到大输出,less从大到小输出 int main() { int i,n; int temp; cin>>n; for(i =0; i < n; i++) { cin>>temp; m.push(temp); } while(!m.empty()) { cout< < 4、struct cmp { bool operator()(int x, int y) { return x > y; // x小的优先级高 //也可以写成其他方式,如: return p[x] > p[y];表示p[i]小的优先级高 }};
声明:priority_queue<int> q;
#include #include #include #include #include using namespace std; struct cmp { bool operator ()(int x,int y) { return x>y; //小的优先级高 } }; priority_queue ,cmp> m; int main() { int i,n; int temp; cin>>n; for(i =0; i < n; i++) { cin>>temp; m.push(temp); } while(!m.empty()) { cout< < 5、//重载x,一般重载<号,防止编译错误 struct node { int x, y; friend bool operator < (node a, node b) { return a.x > b.x; //结构体中,x小的优先级高 } };
priority_queue<node> q;//定义方法
#include #include #include #include #include using namespace std; struct node { int x,y; friend bool operator < (node a,node b) //friend不能省略 { return a.x>b.x; //小的优先级高 } }; priority_queue m; int main() { int i,n; cin>>n; node temp; for(i =0; i < n; i++) { cin>>temp.x>>temp.y; m.push(temp); } while(!m.empty()) { cout< <<" "< <