在c ++中列出迭代器查找函数错误

时间:2012-11-14 03:02:59

标签: c++ list iterator

我的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);;
}

有谁知道如何解决这个问题?提前谢谢!

3 个答案:

答案 0 :(得分:4)

#include <algorithm>添加到您的CPP文件中。

答案 1 :(得分:1)

您需要为operator==算法重载std::find,假设您要比较Process的ID 说:

 bool operator==(const Process &lhs, const Process& rhs)
 {
   return lhs.id== rhs.id;
 }

现在,你可以让它运作

#include <algorithm>
std::list<Process>::iterator itr = std::find(queue.begin(), queue.end(), p);

答案 2 :(得分:0)

为什么在构造函数中声明list<Process> queue;不使用它们?