[英]custom operator for priority queue in cpp
使用自定义运算符声明这样的优先级队列时出错
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 Solution::minMeetingRooms(std::vector&)'中:/code/Solution.cpp:33:23:错误:在'('标记priority_queue()之前缺少模板参数间隔,向量,比较1)p;
^ /code/Solution.cpp:33:32: 错误:',' 标记之前的预期主表达式优先级队列(间隔,向量,比较 1)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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.