
STL源码
逍遥子_
重点关注大并发处理、分布式计算、微服务、物联网、大数据等领域
展开
-
STL源码之迭代器
1、迭代器是什么?为什么要引入迭代器? STL是将容器与算法分离开的,我们用到的类模板和函数模板即是用于实现这两个东西,其中类模板用于实现容器,函数模板用于实现算法,在使用的时候需要一个将两者联系起来的东西,这个东西就是迭代器。例如段代码1所示:算法find需要访问容器ivec中的每一个元素之后才能确定该容器中是否有目标元素10,在这里find需要使用了类型为vector::itera原创 2012-05-23 19:13:19 · 1223 阅读 · 0 评论 -
内存池总结
原文放在另一个博客地址:http://houjixin.blog.163.com/为什么要内存池?(1) 在调试阶段检查内存泄露。C++的指针给大家带来了很大的方便,但是它对内存的自由操作也带来了内存泄露等一系列问题,在一些嵌入式软件开发过程中(2) 减少内存碎片。频繁的从堆中new一些小内存容易造成内存碎片增加。原创 2012-05-23 19:11:43 · 2294 阅读 · 0 评论 -
STL源码学习之空间配置
STL的空间配置器主要用于内存的分配、填充、释放等操作,在学习它之前,需要深入一点理解new和delete。由于new和delete分两段操作:内存配置和对象构建(析构),本文亦将按此进行分类,其中第1节简单回顾一下new和delete,第2节主要介绍内存配置;第3节主要介绍对象构建(析构)。 1、new 与delete 1.1、简单介绍 复习一下,平常我们使用的new和d原创 2012-09-09 16:19:49 · 950 阅读 · 0 评论 -
模板的编译模式
1.函数模版的编译模式分两种:完全包含编译模式和局部编译模式(需要用export关键字)2.不同的编译器对这两种编译模式的支持各不相同,但一般都支持完全包含编译模式,具体支持情况需要参照具体使用的编译器文档模版函数和普通函数在使用的时候有一定的区别:(1)普通函数在使用的源文件中直接include该函数的声明即可(2)模版函数在使用的源文件中既要include模版函数的声明,也转载 2012-10-20 19:24:23 · 6662 阅读 · 0 评论 -
为什么C++编译器不能支持对模板的分离式编译
首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,即windows可执行文件)文件格式,并且本身包含的就已经是二进制码,但是不一定能够执行,因为转载 2013-01-23 16:20:18 · 1004 阅读 · 0 评论 -
模板编译过程
首先说一下c++编译的过程:1. 预编译将文件中有#...的命令都进行展开,例如define MAX 100,就是建立起MAX与100间的对待关系,好在编译阶段进行堆的。而include就是就是把include的文件全部复制到当前文件中,如果当前文件是cpp文件,一个cpp文件就形成一个编译单元。这里有几点需要注意的地方:(1)如果一个h文件没有被任何cpp文件所inclu转载 2013-01-23 16:24:05 · 2753 阅读 · 1 评论