前言

借助VScode的IME and Cursor、HyperScopes、Smart Input插件实现中文注释和英文代码自动切换。

效果如下图,编写注释时光标颜色为绿色,并且自动切换为中文;编写代码时光标颜色为默认橘色,并且自动切换为英文。

阅读全文 »

前言

vector是STL中最常用的一种关联式容器,其对应的数据结构是采用顺序存储结构的线性表。

本篇主要内容:
1.vector迭代器介绍;
2.vector的底层存储结构和内存管理方式;
3.vector的一些常用操作实现解析,比如insert:

阅读全文 »

前言

迭代器是一种抽象概念,在设计模式中,迭代器对外提供了一种遍历一个聚合对象(可以简单理解为一堆相同类型的对象的集合体)各个元素的方式,但是又避免了暴露内部结构。

本篇主要内容是:
1.以一个容器的迭代器例子说明迭代器模式的典型实现;
2.介绍Traits编程技巧的实现,说明如何提取出与迭代器相关的五种类型;

3.SGI在iterator_traits的基础上额外提供了对于每种类型的__type_traits,以表示每种类型的特性。

阅读全文 »

前言

STL的空间配置器,负责的主要工作是容器的空间管理,一般情况下空间都是指内存(存在将空间置于外存的配置器),所以也可称为内存管理器。

读完《STL源码剖析》第二章内容,需要知道的是:
1.SGI标准下将空间配置和构造析构分为两个阶段。空间配置是申请和释放内存;构造析构是对象的创建和销毁。
2.SGI标准下的空间配置器alloc具有两级,第一级负责128字节以上的空间申请,第二级以内存池的形式管理。二者均以字节为单位管理内存,对外提供标准接口以元素为单位管理内存。

3.对于未初始化的空间除了构造和析构的支持外,还提供复制、填充、以对象x填充的管理操作。

阅读全文 »

《Effective C++》第七章读书笔记,主要是关于C++内存管理的行为。主角是operator new和operator delete,配角是new-handler,当operator new无法满足内存需求时调用的函数。

多线程下的内存管理更加复杂。由于heap是全局性资源,多线程会出现对于这一资源的竞争访问。所以在这种情况下内存管理更加复杂(本章并没有提到应该如何处理,只是提醒需要采用同步的方法进行控制)。

另外还需要注意的是分配单一对象和多个对象的区别。即operator new和operator new[]、operator delete和operator delete[]。

最后STL容器使用的heap内存是由分配器管理,而不是new和delete直接管理(本章不讨论分配器)。

阅读全文 »

《Effective C++》第六章读书笔记,本章主要介绍C++在面向对象编程上的一些细节,比如继承可以是单一继承或者多重继承;每一个继承连接可以是public、protected、private,也可以是virtual(虚基类)或者non-virtual;成员函数是否为virtual或者non-vritual等等。

阅读全文 »

《Effective C++》第五章读书笔记,在适当提出类的定义和函数的定义之后,就需要实现它们。本章主要介绍实现时需要注意的一些细节。

阅读全文 »

《Effective C++》第四章读书笔记,软件设计就是希望软件做出期望的步骤和做法,通常从一般性的构想开始,逐渐实现细节,以允许特殊接口的开发。这些接口最终实现为C++的声明。本章主要是对良好的接口设计与声明进行规范。

阅读全文 »
0%