C++_泛型编程与标准库(十)——set与map

参考:《侯捷泛化编程与标准库》、GNU9.3.0,vs2019

图中标红部分为自己的笔记理解

SET

GNU 9.3.0的set部分代码如下,图中可以看到_Rb_tree重定义为_Rep_type,由_Rep_type再定义一个红黑树,其中key和value一样

vc2019的set部分代码如下,进一步观察_Tree可以看到,vc2019少了一个模板参数,而实现方法就在_Tree的模板参数也是一个泛型模板,在_Tset_traits中实现key就是value

二者对比可以发现,GNU的是复合关系,set里包含了一棵红黑树,VC2019是继承is-a的关系,set就是一颗红黑树

MAP

GNU 9.3.0的map部分代码如下,图中可以看到_Rb_tree重定义为_Rep_type,由_Rep_type再定义一个红黑树,其中value是pair类型,用const关键字实现了key不可修改

vc2019的map部分代码如下,进一步观察_Tree可以看到,vc2019少了一个模板参数,而实现方法就在_Tree的模板参数也是一个泛型模板,在_Tmap_traits中实现value是pair类型,用const关键字实现了key不可修改

二者对比可以发现,GNU的是复合关系,map里包含了一棵红黑树,VC2019是继承is-a的关系,map就是一颗红黑树

lower_bound()返回更适合插入元素地方的迭代器,map本身的lower_bound()

C++_泛型编程与标准库(十)——set与map相关推荐

  1. C++_泛型编程与标准库(九)——红黑树的使用

    C++_泛型编程与标准库(九)--红黑树的使用 参考:<侯捷泛化编程与标准库>.GNU9.3.0,vs2019 图中标红部分为自己的笔记理解 struct _Rb_tree_node_ba ...

  2. C++_泛型编程与标准库(八)

    C++_泛型编程与标准库(八) 参考:<侯捷泛化编程与标准库>.GNU9.3.0,vs2019 图中标红部分为自己的笔记理解 1.array GNU 2.9的写法 array GNU9.3 ...

  3. C++_泛型编程与标准库(七)

    C++_泛型编程与标准库(七) 参考:<侯捷泛化编程与标准库>.VC2019 图中标红部分为自己的笔记理解 1.深度探索vector 笔者觉得在最新的VC2019下不是二倍增长,虽然是几何 ...

  4. C++_泛型编程与标准库(六)

    C++_泛型编程与标准库(六) 图中标红部分为自己的笔记理解 1.iterator几个特定属性 vc2019的链表list迭代器部分代码 // CLASS TEMPLATE _List_iterato ...

  5. C++_泛型编程与标准库(五)

    C++_泛型编程与标准库(五) 图中标红部分为自己的笔记理解 1.容器与容器之间的关系 2.深度探索list list是双向链表,从vc2019的list源码和以下图片都可以看出 template & ...

  6. C++_泛型编程与标准库(四)

    C++_泛型编程与标准库(四) 图中标红部分为自己的笔记理解 1.注意一个特化的typedefine 2.分配器 2.2.VC2019的allocator类 1. allocate调用operator ...

  7. C++_泛型编程与标准库(三)

    C++_泛型编程与标准库(三) 图中标红部分为自己的笔记理解 1.分配器简单测试,后面还会单讲 实测VC2019在Microsoft Visual Studio\2019\Community\VC\T ...

  8. C++_泛型编程与标准库(二)

    C++_泛型编程与标准库(二) 图中标红部分为自己的笔记理解 为什么快?因为是红黑树实现的(高度平衡树)

  9. C++_泛型编程与标准库(一)

    C++_泛型编程与标准库(一) 图中标红部分为自己的笔记理解

最新文章

  1. Oracle SQL Tuning Advisor 测试
  2. ARM Linux (S3C6410架构/2.6.35内核)的内存映射(三)
  3. matlab二阶导数表示,【单选题】在MATLAB符号计算中,y的二阶导数表示为( )。...
  4. 面试问:Kafka 为什么速度那么快?
  5. 百度、华为、京东、B站最新面试题汇集,实战篇
  6. 啥?用了并行流还更慢了
  7. mysql 10天以前_MySQL前10天7天前
  8. VS2010怎样显示行号
  9. Spring Boot 依赖包讲解
  10. Win7下如何显示文件的扩展名?
  11. ftp搭建发布到外网踩坑记
  12. java实现马尔科夫链_马尔科夫链 Markov Chains(示例代码)
  13. mysql 复制表结构或创建新表
  14. 高端大气上档次!10个精美的国外HTML5网站欣赏
  15. 功耗大好还是小好_额定功率大好还是小好
  16. yjp在jboss上的on-demand attach
  17. 罗斯蒙特2088G2S22A1M5B4Q4压力变送器
  18. 【js特效】图片循环滚动代码
  19. 创建型模式:工厂方法
  20. curses-键盘编码-openssl加解密【转】

热门文章

  1. 零基础入门学习Python (9)-列表(1)
  2. Nature综述:肠道微生物在人类代谢健康与疾病中的作用
  3. Nature子刊:Knight组发布快速UniFrac算法
  4. R语言ggplot2可视化:ggplot2使用geom_mark_ellipse函数进行椭圆形圈定(注释)特定的数据簇或组
  5. R语言ggplot2可视化:自定义函数在箱图(boxplot)上添加分组样本个数(count)、分组均值(mean)、箱体填充色自定义、数据标签色彩自定义
  6. 学习C++ 丨 类(Classes)的定义与实现!C/C++必学知识点!
  7. 汇编语言---冒泡排序
  8. iphone 11维修 服务器,苹果官方承认!iPhone 11有这个重大问题,将免费维修
  9. 简述控制反转ioc_阅读Spring源码:IOC控制反转前的处理
  10. python 离线下载和安装第三方库 .whl wheel 文件