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

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值