c++ - 术语不计算为带 2 个参数的函数——错误
问题描述
嗨,我在我的 cpp 程序中使用 make_heap。我在下面写了与之对应的代码-
struct jobs {
int abs_deadline, id, rem_ET, arr_time;
};
struct compareDeadline {
bool comparator(jobs t1, jobs t2) {
return t1.abs_deadline < t2.abs_deadline;
}
};
struct compareArrTime {
bool comparator( jobs t1, jobs t2) {
return t1.arr_time < t2.arr_time;
}
};
void runningPhase(int ntasks,vector<tasks> j) {
vector<jobs> ready_queue,waiting_queue;
int system_criticality = 1, temp, timer = j[0].arr_time;
cout << "\nSCHEDULE:\n\n";
for (int i = 1; i <ntasks; i++) {
if (j[i].criticality == 1) {
temp = j[i].arr_time + j[i].deadline;
if (timer == j[i].arr_time) {
ready_queue.push_back({ temp,j[i].id, j[i].wcet[0],j[i].arr_time });
}
else {
waiting_queue.push_back({ temp,j[i].id,j[i].wcet[0],j[i].arr_time });
}
}
}
make_heap(ready_queue.begin(), ready_queue.end(), compareArrTime());
make_heap(waiting_queue.begin(), waiting_queue.end(), compareDeadline());
schedule(j, ready_queue, waiting_queue,ntasks);
}
获取附加错误 错误
任何帮助将不胜感激。
解决方案
您正在将类型的参数传递compareArrTime
给make_heap
. 没关系。让我们称之为cat
。在内部make_heap
,它会尝试这样调用它cat(one, two)
:
但是您compareArrTime
没有operator ()
定义。因此错误。
你应该这样写:
struct compareArrTime {
bool operator ()( jobs t1, jobs t2) const {
return t1.arr_time < t2.arr_time;
}
};
并且可能采取t1
和t2
按const &
而不是按价值。
推荐阅读
- nginx - 使用 Nginx 和 Proxy Pass 删除部分 URL
- cucumber-jvm - Cucumber 6.9.1 版本无法执行多个标签
- python-3.x - 引用 pandas 中枢轴数据框的索引
- powershell - 在按下 ENTER 之前获取 powershell 当前行
- java - 如何为动作溢出图标添加监听器?
- python - 如何在基于 imageHash 的字典中制作近乎相似的图像集群,而不在字典中重复相同的图像
- c++ - C++:为什么这个 for 循环中的总和是 0?
- linux - 在自适应 autosar 中,基于 lib 的 ara:com 会影响基于服务的实现吗
- java - 找不到符号变量计算
- php - 高级自定义字段:调用未定义函数 get_field()