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, cmp_greater>  min_heap(tower.begin(), tower.begin() + n / 2) ;//最小堆
    priority_queue, cmp_less>  max_heap(tower.begin() + n / 2, tower.end() );    //最大堆

 

转载于:https://www.cnblogs.com/dj0325/p/9477553.html

你可能感兴趣的:(prority_queue自定义类型使用)