其中只重载了小于符号,没有重载等于符号。重载小于非常容易理解,因为map底层是红黑树结构,所以必须规定大小顺序。

类型为map<test,int>的变量m,可以调用m.find(param)函数,成功返回。为什么没有重载等于符号也可以比较,我非常不理解,怀疑是编译器默认提供了重载等于运算符。

之后通过阅读源代码了解到,map.find只需要重载小于运算符,不需要重载等于运算符。原理是如果满足!a<b&&!b<a那么a==b,并且find函数就是利用的这个原理。

最后编辑于:2020-08-07 19:49