自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 《STL源码剖析》-学习笔记05-deque设计思想

deque采取一段被称为map(不是map容器)的主控中心,map是一段连续的空间,其中存储着一些指针,这些指针指向了不同的内存,当对deque进行操作时,通过这些指针间接地操作它指向的空间,以此来实现逻辑上的连续空间。deque表面上是一段内存连续的可双端操作的容器,但设计时是用一段一段内存和复杂的迭代器结构来实现这种“连续”的空间。deque类内包含元素T,指向T的pointer,指向pointer的map。如果想要增删改查元素,便可间接通过 迭代器和中控器操作一块物理上连续的空间。

2023-06-02 20:18:39 90

原创 《STL源码剖析》-学习笔记04-list元素操作

【代码】《STL源码剖析》-学习笔记04-list元素操作。

2023-05-31 22:23:41 39 1

原创 《STL源码剖析》-学习笔记03-traits编程在迭代器内部函数实现时的使用

首先需要明确,定义一个迭代器时,为了防止出现注意不到的错误,大多数情况会继承自标准库中的std::iterator,但此iterator纯粹是类型定义,不会产生内存开销。这样,通过实现重载的__distance()函数,便可实现distance函数识别迭代器类型来调用不同__distance()函数的重载版本,提高效率。上一文章写出了traits编程的设计思想,本文会列出它在迭代器内部获取两迭代器之间距离函数distance()的功效和注意点。

2023-05-27 17:54:29 42 1

原创 《STL源码剖析》-学习笔记02-traits编程

在最上方的代码里,由代码的意思可得我其实是默认了迭代器I为一个“类”,这样才能取到它的成员变量value_type用于指定该迭代器所属的容器类别,但是迭代器并不一定是类,还有可能是原生指针,原生指针当然是不包含成员变量的。其中第一个类的作用为:在声明下面的模板函数的返回值时,指定返回值类型value_type为类模板I的成员变量(需要这样做的原因是,模板是在编译器具现化之后才能被推导出具体的类型,在此之前编译器并不知道value_type是一个成员变量,成员函数或者其他东西)。但实际上它可以解决以下问题。

2023-05-26 21:29:29 50 1

原创 《STL源码剖析》-学习笔记01-placement new

placement “new” 可以在用户已经声明过的内存上构建新的对象,此操作只会调用对象的构造函数,并不会产生新的内存,并且可以避免内存碎块问题。值得注意的是,foo类的内存大小为4,成员函数不占用类的空间,所以能够直接使用new为int分配的大小为4的空间。其中address为地址,可传入一个指针,ClassConstructor顾名思义为构造函数。

2023-05-26 20:58:21 49 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除