@iStarLee
2019-08-13T09:14:01.000000Z
字数 887
阅读 648
algorithm

// constructing priority queues#include <iostream> // std::cout#include <queue> // std::priority_queue#include <vector> // std::vector#include <functional> // std::greaterusing namespace std;class mycomparison {bool reverse;public:mycomparison(const bool &revparam = false){ reverse = revparam; }bool operator()(const int &lhs, const int &rhs) const{if (reverse) return (lhs > rhs);else return (lhs < rhs);}};template <typename T>void PrintQueue(T& q){while (!q.empty()){cout << q.top()<< " ";q.pop();}cout << "\n";}int main(){int myints[] = {10, 60, 50, 20};std::priority_queue<int> second(myints, myints + 4);std::priority_queue<int, std::vector<int>, std::greater<int> > third(myints, myints + 4);// using mycomparison:typedef std::priority_queue<int, std::vector<int>, mycomparison> mypq_type;mypq_type fifth(mycomparison(true)); // greater-than comparisonPrintQueue(second);PrintQueue(third);PrintQueue(fifth);return 0;}
output:
60 50 20 1010 20 50 60
