prority_queue自定义类型使用

struct Tower{
    Tower(int h, int p){
        height = h;
        pos = p;
    }
    bool operator < (Tower &t) {
        if (height < t.height) {
            return true;
        }
        else {
            return false;
        }
    }
    int height;
    int pos;
};

struct cmp_less{
    bool operator() (Tower & t1, Tower &t2){
        if (t1.height < t2.height) {
            return true;
        }
        else {
            return false;
        }
    }
};
struct cmp_greater{
    bool operator() (Tower & t1, Tower &t2){
        if (t1.height > t2.height) {
            return true;
        }
        else {
            return false;
        }
    }
};

priority_queue<Tower, vector<Tower>, cmp_greater>  min_heap(tower.begin(), tower.begin() + n / 2) ;//最小堆
    priority_queue<Tower, vector<Tower>, cmp_less>  max_heap(tower.begin() + n / 2, tower.end() );    //最大堆

 

posted @ 2018-08-14 20:22  蓝天飞翔的白云  阅读(658)  评论(0编辑  收藏  举报