【发布时间】:2012-11-14 03:02:58
【问题描述】:
我的 c++ 程序中有一个编译错误:“no matching function for call to find(std::_List_iterator<Process>, std::_List_iterator<Process>, Process&)”。
mfqueue 类看起来像:
MFQueue::MFQueue() {
list<Process> queue;
vector<int> ran;
int time_quantum = 0;
int run_for = 0;
}
MFQueue::MFQueue(int quantum) {
list<Process> queue;
vector<int> ran;
int time_quantum = quantum;
int run_for = 0;
}
“过程”是我的课程之一
bool MFQueue::contains(Process p) {
list<Process>::iterator itr = find(queue.begin(), queue.end(), p);
return (p == *itr);;
}
有谁知道如何解决这个问题?提前致谢!
【问题讨论】:
-
#include <algorithm>...return std::find(queue.begin(), queue.end(), p) != queue.end(); -
return (p == *itr);如果找不到对象,则会给出未定义的行为;不允许取消引用过去的迭代器。你想要return itr != queue.end();。 -
你最好希望你也不需要使用队列。只要您
#include <queue>,您的代码就会中断。