使用自定义运算符声明这样的优先级队列时出错
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;
错误-
^/代码/解决方案。cpp:33:32:错误:在“,”令牌优先级_队列(间隔、向量、比较1)p之前应为主表达式;
^/代码/解决方案。cpp:33:49:错误:在“,”令牌优先级_队列(间隔、向量、比较1)p之前应为主表达式^
/code/Solution.cpp:33: 58:错误:预期的主表达式之前')'令牌priority_queue(区间,向量,比较1)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;
考虑下面的优先级类声明<代码>类优先级队列 我的想法: 我能想到的一件事是,这将强制优先级队列使用对象比较器,并且不会提供实现其自定义比较器的能力,因为类的用户可能希望基于某个不同的比较器构建队列。
priority_queue,comparator(query,d)>min_heap; main.cpp:20:7:注意:“comparator”不是文字,因为: class comparator{ main.cpp:20:7:注意:“comparator”不是聚合,没有普通的默认构造函数,也没有不是复制或移动构造函数的constexpr构造函数 Main.cpp:92:65:注意:应为类型,但
这是我写的Dijkstra算法的代码: 在这方面我不能理解的工作 这涉及到: < code>()运算符在这里有什么用?我是说它在这段代码中是如何运作的? 还有为什么我们使用
我试图实现Prim的算法Java优先级队列。 我找不到我的错误我只是认识到队列没有正确地排列节点。 图表示例: 它始终将节点 4 作为第二个节点。因此,它对队列进行排序,如 [node1, node4, node2, node3],而不是 [node1,node2, node3, node4]。我对优先级队列执行了哪些操作? 问候语
我正在为Dikjstra算法做一个优先级队列。我目前在插入方法上有麻烦。我包含了整个类的代码,以防你需要更好地了解我想完成的事情。我将堆索引放在一个数组列表(heapIndex)中,堆放在另一个数组列表中。 那是我运行程序后的输出(值,优先级,堆索引)。*(-1)表示heapIndex中的空单元格。
我需要一个优先级队列,它首先获得具有最高优先级值的项目。我当前正在使用队列库中的PriorityQueue类。但是,这个函数只先返回值最小的项。我尝试了一些很难看的解决方案,比如(sys.maxint-priority)作为优先级,但我只是想知道是否存在更优雅的解决方案。