当前位置: 首页 > article >正文

《STL源码剖析》笔记记录

《STL源码剖析》笔记记录

2.空间适配器(allocator)

分配的是空间,而不一定是内存

为了精密分⼯,STL allocator 决定将这两个阶段操作区分开来。
1、对象构造由 ::construct() 负责;对象释放由 ::destroy() 负责。
2、内存配置由 alloc::allocate() 负责;内存释放由 alloc::deallocate() 负责;

2.2 具备次配置力的SGI空间配置器

关键概念
1、第一级配置器 > 128byte 直接申请,malloc, free
2、第二级配置器
内存数组 freelist
内存池

2.3 内存基本处理工具

2.3.1 uninitialized_copy

2.3.2 uninitialized_fill

2.3.3 uninitialized_fill_n

3.迭代器概念以及traits编程方法

3.4 Traits 编程技巧

Traits 可以理解为一种类型的 “特性” 或 “属性” 的封装。通过 Traits 类,我们可以在编译时根据不同的类型获取其相关的信息,如类型的大小、是否为指针类型、是否为可拷贝类型等,或者执行与该类型相关的特定操作。Traits 编程技巧主要利用模板特化来实现,针对不同的类型提供不同的实现。

作用
实现泛型算法的优化
适配不同容器类型,根据元素类型选择合适操作。

3.4.1 相应型别

value_type :迭代器所指对象的类型,原⽣指针也是⼀种迭代器,对于原⽣指针 int*,
int 即为指针所指对象的类型,也就是所谓的 value_type 。

difference_type : ⽤来表示两个迭代器之间的距离,对于原⽣指针,STL 以 C++ 内
建的 ptrdiff_t 作为原⽣指针的 difference_type。

reference_type : &。

pointer_type : 就是相应的指针类型,对于指针来说,最常⽤的功能就是 operator* 和
operator-> 两个运算符。

iterator_category: 作⽤是标识迭代器的移动特性和可以对迭代器执⾏的操作,从
iterator_category 上,可将迭代器分为 Input Iterator、Output Iterator、Forward
Iterator、Bidirectional Iterator、Random Access Iterator 五类,这样分可以尽可能地提
⾼效率。

4. 序列式容器


http://www.kler.cn/a/569777.html

相关文章:

  • Unity中动态切换光照贴图LightProbe的方法
  • 服务流程设计和服务或端口重定向及其websocket等应用示例
  • 《Python百练成仙》31-40章(不定时更新)
  • iOS UICollectionViewCell 点击事件自动化埋点
  • react 中,使用antd layout布局中的sider 做sider的展开和收起功能
  • 【Linux】进程地址空间和虚拟地址空间
  • 测试的BUG分析
  • 42 session反序列化漏洞
  • 数据结构(初阶)(七)----树和二叉树(前中后序遍历)
  • vcredist_x64 资源文件分享
  • React(11)路由demo
  • IDEA相关配置
  • LeetCode-154. 寻找旋转排序数组中的最小值 II
  • go类(结构体)和对象
  • 派可数据BI接入DeepSeek,开启智能数据分析新纪元
  • GPT-4.5
  • 力扣785. 判断二分图
  • 黑龙江省地标-DB31/T 862-2021 “一网通办”政务服务中心建设和运行规范
  • js基础二
  • 我通过AI编程完成了第一个实用程序