cpp中优先级队列的自定义运算符

问题描述 投票:0回答:1

在使用自定义运算符声明优先级队列时出错

struct compare1{
         bool operator()(Interval &s1,Interval &s2){
             if(s1.start!=s2.start)return s1.start<s2.start;
             return s1.end<s2.end;
         }
     };
priority_queue(Interval,vector<Interval>,compare1)p;

错误-> / code / Solution.cpp:在成员函数'int解决方案:: minMeetingRooms(std :: vector&)'中:/code/Solution.cpp:33:23:错误:'('标记前缺少模板参数priority_queue(Interval,vector,compare1)p;

^/code/Solution.cpp:33:32:错误:“,”令牌之前的预期主表达式priority_queue(Interval,vector,compare1)p;

^/code/Solution.cpp:33:49:错误:“,”令牌之前的预期主表达式priority_queue(Interval,vector,compare1)p;^

/ code / Solution.cpp:33:58:错误:')'标记之前的预期主表达式priority_queue(Interval,vector,compare1)p;

我的整个代码

class Solution {
public:
    /**
     * @param intervals: an array of meeting time intervals
     * @return: the minimum number of conference rooms required
     * 
     */
     static bool compare(Interval s1 ,Interval s2){
         if(s1.start!=s2.start)return s1.start<s2.start;
         return s1.end<s2.end;
     }

     struct compare1{
         bool operator()(Interval &s1,Interval &s2){
             if(s1.start!=s2.start)return s1.start<s2.start;
             return s1.end<s2.end;
         }
     };
    int minMeetingRooms(vector<Interval> &intervals) {

        sort(intervals.begin(),intervals.end(),compare);
        priority_queue(Interval,vector<Interval>,compare1)p;
        p.push(intervals[0]);
        int ans = 0;
        for(int i=1;i<intervals.size();i++){
            Interval curr = interevals[i];
            Interval earliest = p.top();
            p.pop();


            if(earliest.end<curr.start){
                earliest.start = min(earliest.start,interevals[i].start);
                earliest.end = max(earliest.end,intervals[i].end);
                pq.push(earliest);
                ans++;
            }
            else{
                p.push(interevals[i]);
            }

        }
        return ans;


    }
};
c++ priority-queue
1个回答
1
投票
使用此,

priority_queue<Interval,vector<Interval>,compare1> p;

© www.soinside.com 2019 - 2024. All rights reserved.