C++11 map使用find 报错==

定义了两个类class A,class B. 在class C中定义了map maps,使用find等函数过程中报错.
错误代码:std::map::iterator it = std::find(maps.begin(), maps.end(), a); //A* a;
报错信息:错误 C2678 二进制“==”: 没有找到接受“std::pair”类型的左操作数的运算符(或没有可接受的转换)
尝试给两个类重载operator ==操作符,但没用。而且,我的元素是指针,比较的值应该就是int数值吧,应该不需要重载?
希望各位能教教我,折腾的够呛!

真的无语,走偏了一点点,却导致这么离谱的错误。
将std::find(maps.begin(), maps.end(), a) 改成maps.find(a)即可编译成功。
我不知道这是什么原因!还请大佬继续指点一下!