在使用自定义运算符声明优先级队列时出错
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;
}
};
priority_queue<Interval,vector<Interval>,compare1> p;