![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
lalala???
这个作者很懒,什么都没留下…
展开
-
序列式容器
vector:就是一个可变的数组,底层是一个固定数量的数组,当元素的数量大于数组的容量的时候,会进行倍数扩充,将原来数组的数据拷贝到现在的数组里。 vector iterator 就是一个普通的指针,对于vector的操作其实就是对于指针的操作,对于操作符进行了重载,可以使之和普通数组一样使用。 list:链表,底层就是一个双向链表,list的iterator就是_list_node的指针,对于其操作就是在链表上进行操作,重载运算符。 deque:和vector相似,比vector头部插入快,底层是一原创 2020-10-31 23:29:22 · 174 阅读 · 0 评论 -
STL源码剖析第三章迭代器和traits编程技法读后感
迭代器类似于指针的对象,内中管理着元素指针,对于*、->、++、--等操作符进行重载,管理着对象的创建和删除。 对于迭代器的使用的时候需要相对应的型别,所以利用traits技法,来获取型别定义对象。 traits就是特性萃取机,定义一个iterator_traits类,在类中使用typedef对于模板中的参数进行重命名,这样我们就能获取传递的参数的型别,对于特定的类型如原始指针,我们可以特化一个版本的模板。 5中常用的型别:value_type、difference_type、pointer、r原创 2020-10-28 00:17:26 · 122 阅读 · 0 评论 -
STL源码剖析第二章空间配置器(allocator)读后感
STL 将空间配置器分成三部分 1、构造construct()和 destory(): 因为不知道会传递什么类型,使用template模板来实现,对于特别的类型,使用特化来实现。 因为不同的型别有不同的处理方法,所以利用类型萃取和函数重载来实现。涉及traits,在第三章解释。 2、空间的配置与释放 设计要求: 向system heap申请内存,考虑多线程问题,考虑内存不足的问题,考虑过多的小型内存造成内存碎片的问题。 根据这些情况,设计了两级内存配置器,如果内存大于128 b...原创 2020-10-27 23:34:23 · 122 阅读 · 0 评论