find 算法和 set 的 insert 成员函数是很多必须判断两个值是否相同的函数代表,

find 对 “相同” 的定义是相等,基于 operator== ,

set::insert 对 “相同” 的定义是等价,通常基于 operator< 。

操作上来说,相等的概念基于 operator== 的,如果表达式 “x == y” 返回true,x和y有相等的值,

x 和 y 相等并不意味着所有它们的成员有相等的值

等价是基于在一个有序区间中对象值的相对位置。等价一般在每种关联容器(set、multiset、map 和 multimap)的一部分——排序方面有意义,

两个对象 x 和 y 如果在关联容器 c 的排列顺序中没有哪个排在另一个之前,那么它们关于 c 使用的排列顺序有等价的值

对于 set<Widget> 的默认比较函数是 less<Widget>,operator<

1   !( w1 < w2 ) && !( w2 < w1 )  // w1<w2非真且w2<w1非真 

意义在于: 两个值没有哪个在另一个之前(关于某个排序标准),那么它们等价

一般情况下,用于关联容器的比较函数是用户定义的判断式每个关联容器通过 key_comp成员函数来访问排序判断式:

1   !c.key_comp()(x, y) && !c.key_comp()(y, x);

c.key_comp() 返回一个函数,并把 x 和 y 作为实参

总之,通过只定义一个比较函数并使用等价作为两个值 “相等” 的意义的仲裁者,标准关联容器避开了很多会由允许两个比较函数而引发的困难。

转载于:https://www.cnblogs.com/kidycharon/p/10019135.html

Effective_STL 学习笔记(十九) 了解相等和等价的区别相关推荐

  1. Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法

    Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...

  2. Mr.J-- jQuery学习笔记(十九)--自定义动画实现图标特效

    之前有写过自定义动画Mr.J-- jQuery学习笔记(十八)--自定义动画 这次实现一个小demo 图标特效 页面渲染 <!DOCTYPE html> <html lang=&qu ...

  3. 【theano-windows】学习笔记十九——循环神经网络

    前言 前面已经介绍了RBM和CNN了,就剩最后一个RNN了,抽了一天时间简单看了一下原理,但是没细推RNN的参数更新算法BPTT,全名是Backpropagation Through Time. [注 ...

  4. javascript学习笔记(十九) 节点的操作

    包括节点的创建.添加.移除.替换.复制 本节要用到的html例子 1 <ul id="myList"> 2 <li>项目一</li> 3 < ...

  5. 乐优商城学习笔记十九-商品详情(二)

    2.页面静态化 2.1.简介 2.1.1.问题分析 现在,我们的页面是通过Thymeleaf模板引擎渲染后返回到客户端.在后台需要大量的数据查询,而后渲染得到HTML页面.会对数据库造成压力,并且请求 ...

  6. 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)

    概述 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合. 如何使请求的发送者不需要指定具体的接受者?让请求的 ...

  7. angular学习笔记(十九)-自定义指令修改dom

    使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器,服务,一样,可以通过模块实例的directiv ...

  8. python 学习笔记十九 django深入学习四 cookie,session

    缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...

  9. IOS学习笔记十九NSArray和NSMutableArray

    1.NSArray NSArray不可变集合,不能添加新元素和删除已有元素和替换元素 2.demo Dog.h #import <Foundation/Foundation.h> #ifn ...

  10. 最优化学习笔记(十九)——拟牛顿法(5)BFGS算法

    一.BFGS算法的更新公式 为了推导BFGS算法,需要用到对偶或者互补的概念,前边已经讨论过hessian矩阵逆矩阵的近似矩阵需要满足以下条件: Hk+1Δg(i)=Δx(i)0≤i≤k \bolds ...

最新文章

  1. 【树的直径】解题报告: luogu P3629 [APIO2010]巡逻(树的直径,位运算成对变换,思维)
  2. 面试必问:设计模式遵循的面向对象设计原则!
  3. Magento 2数据库EAV模型结构
  4. Oracle11gR2_ADG管理之恢复主库的truncate表实战
  5. 快速实现手势解锁功能
  6. 抖音一个老人和一个机器人歌曲_一个老人孤独去世,一个老人安然离世
  7. ScrollView常用属性汇总
  8. 验1-8 输出倒三角图案 (5 分)
  9. Program E的Flash前端
  10. 我的ROS2开发环境
  11. 【软考中级-网工】1
  12. Linux下学习DB2命令的笔记
  13. html表白earth,浪漫表白的英文句子大全
  14. 网站显示未连接上服务器,网站未连接上服务器是什么意思
  15. 好教程推荐系列:《C++新经典》和《Visual C++ 2017从入门到精通》
  16. 发表论文查重率是多少?
  17. android实现文本信息复制,剪切板(ClipboardManager)
  18. ifix自定义声音报警(自动执行脚本)
  19. 第七章 数组成绩汇总
  20. 《Microsoft Sql server 2008 Internal》读书笔记--第七章Special Storage(3)

热门文章

  1. linux监测node进程,通过node_exporter监控linux服务器一
  2. java open course_关于开闭原则 JavaDiscountCourse 类的设计
  3. 网关和路由器的区别_5G工业路由器与5G DTU的区别介绍详解
  4. 您的浏览器没有获得Java Virtual Machine(JVM)支持。可能由于没有安装JVM或者已安装但是没有启用。请安装JVM1.5或者以上版本,如果已安装则启用它。...
  5. css纯字母或者字母换行显示
  6. startup毕业论文
  7. Six Basic Functional Areas of Spring
  8. css如何实现背景透明,文字不透明?
  9. 用boost库实现traceroute小工具
  10. ZOJ1221 Risk 图形的遍历