美文网首页
关于调用map.find(),key值需不需要重载==

关于调用map.find(),key值需不需要重载==

作者: 37Vision | 来源:发表于2020-08-07 19:46 被阅读0次

今天看到一段代码,map的key是自定义类型即struct类型,简化后的定义如下

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

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

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

相关文章

  • 关于调用map.find(),key值需不需要重载==

    今天看到一段代码,map的key是自定义类型即struct类型,简化后的定义如下 其中只重载了小于符号,没有重载等...

  • SparseArray 遍历及介绍

    SparseArray 遍历 方法1. 可以得到key值: 方法2. 不需要key值: SparseArray...

  • Java方法

    1.方法的定义 语法: 例子:取出两个数的最大值 2.方法的调用 例子:调用上面的方法 3.方法的重载 方法重载:...

  • [iOS 开发基础]- 字典转模型和KVC

    需求一:将字典转换成自己需的对象,对象的属性是字典的key值,直接使用key值获取数据存在两个缺点,一是key值难...

  • Java中的函数(方法)的简单介绍

    定义和调用 举例: 当没有返回值时可以给一个void作为返回值类型,同时void返回类型只支持直接调用。 重载 对...

  • Java基础(方法)

    模块化时代的到来 意义 语法 调用 方法的可变参数 方法重载 方法参数的值传递机制 注意

  • 函数引用饰词用法

    说明:函数引用饰词用法其实跟用const修饰时差不多,即当对象是左值时,会调用左值的那个函数重载版本;当对象为右值...

  • 操作符重载

    操作符重载 二元操作符 成员函数(含 this ) 由左值调用。 注意返回值必须用引用 += 的操作把结果加在了 ...

  • iOS KVC赋值内部实现

    程序优先调用set:属性值方法,代码通过setter方法完成设置。这里的是指成员变量名,set...

  • 苏小研

    1.关于iframe重载页面时不需要重载整个页面,只需要重载页面中的一个框架页会产生很多页面,不容易管理搜索引擎的...

网友评论

      本文标题:关于调用map.find(),key值需不需要重载==

      本文链接:https://www.haomeiwen.com/subject/fajqdktx.html