OOP迭代器和查找方法无法正常工作

Nik*_*ias 1 c++ oop map find

Doctor Hospital::findDoctor(const Doctor &doctor) {
    map<int, Doctor>::iterator iter = find(hospitalInner->doctors.begin(), hospitalInner->doctors.end(), 5);
}
Run Code Online (Sandbox Code Playgroud)

Hy,我对这个确切的方法有一些问题.也许有人知道问题出在哪里?(我正在添加当前错误.)

错误C2678:二进制'==':找不到哪个运算符带有'std :: pair'类型的左操作数(或者没有可接受的转换)C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\VC\include\xutility 3026 1 hospital5

Jos*_*eld 6

要使用特定键查找元素,请使用成员find函数(而不是std::find算法):

map<int, Doctor>::iterator iter = hospitalInner->doctors.find(5);
Run Code Online (Sandbox Code Playgroud)

您可以实现此目的std::find,但您必须编写一个自定义比较器来检查映射first中每个成员的成员std::pair(std::map将其键和值存储为std::pairs).