Priority_queue
めも。
#include <queue> #include <iostream> using namespace std; typedef pair<int,int> pii; struct Comp{ bool operator()(pii left,pii right){ if(left.second < right.second) return true; else if(left.second == right.second and left.first > right.first) return true; else return false; }; }; int main(){ // 何も書かないと降順。(おっきい方からでてくる。) // これは降順にしたもの。 priority_queue<int,vector<int>,greater<int> > Qi; //関数オブジェクトを使っていい感じにもできる。 priority_queue<pii,vector<pii>,Comp> Q; Q.push(make_pair(1,2)); Q.push(make_pair(2,2)); Q.push(make_pair(3,2)); while(not Q.empty()){ cout << Q.top().first << " " << Q.top().second << endl; Q.pop(); } }