0
点赞
收藏
分享

微信扫一扫

Linux中的file命令:查看文件类型

鱼板番茄 2023-08-04 阅读 69
c++

 map和set

STL分为序列式容器(vector、list、deque)和关联式容器(map、set)

序列式容器:数据与数据之间没有很强的联系。(各个数据之间没什么关联)。底层为线性序列的数据结构,里面存储的是元素本身。栈和队列是适配器。

关联式容器:数据和数据之间有很强的关联关系(在数据检索时比序列式容器效率更高。底层是红黑树,再底层是一棵搜索树。)

set

set的本质是Key模型(Key模型就是确认在不在的模型)。典型的set底层是二叉搜索树

Compare是一个仿函数,用来比较。默认给的是less,相当于operator<,我们可以传别的,来控制这里的比较规则、比较方式。

 key_comp/value_comp获取key/value的比较器。  提供它两是为了保持set与map的一个兼容

set支持增删查,不支持修改,因为Key模型的底层是二叉搜索树,其一旦被修改,整个树就有可能错误了,所以是不允许修改的。

set的拷贝构造赋值都是深拷贝,而且是一棵树,消耗比较大。

map 

 map底层存储的结构是pair,pair是一个模板的键值对。map的底层是一棵树

 这里能不能用auto推导?不能,它推不出来

因为其插入时,只看key,val相不相同无所谓,但是map不支持冗余,所以只要key有了,就不支持再插入了。

 其实也不用typedef pair

我们可以用make_pair。前面的都是调用构造。而make_pair是一个函数模板,它的实现方式大致如下,它的优势就是自动推导,不需要我们显式地写模板参数了。make_pair是构造一个匿名pair然后返回

 一般被定义成inline

map的遍历

map和set的迭代器都是双向迭代器,也就是可以正向和反向遍历。

第三十节00:11:00-00:25:00 将双箭头做特殊处理 只看了一遍,没笔记,代码只写了一点

map中的[]

两个题:第三十节1:38:40-2:58:00

unordered_map、unordered_set

举报

相关推荐

0 条评论