
STL源码学习
文章平均质量分 71
hengshan
这个作者很懒,什么都没留下…
展开
-
基于内存池的空间配置器
<br />一、设计思路<br /> 内存池分两部分,一部分是内存池列表,一部分是没有分割的原始连续内存。<br />(1)内存池列表<br /> 内存池由16个列表组成,每个列表维护大小相同的内存块,内存块的大小是8的倍数。最小的内存块是8字节,最大的内存块是128字节。节点结构图如下:<br />------- ------- ------- ------ ----- ------<br />| 8 |--->| |--->|原创 2010-07-08 21:13:00 · 1773 阅读 · 2 评论 -
STL源码学习,开篇。
一 背景介绍 从事coding这一行已经4年了,期间用过c++和java,但是用的最多的还是c++。说来惭愧,什么都不精通,至今一事无成。其实最感兴趣的还是c++语言,因为他灵活、多变。同时,这门语言也造成了学习、理解、应用的复杂性很高。自己曾经认真学习过《STL标准库》一书,也天天在应用vector、list、map这些容器,自以为用的很熟练。有一天没事,重新翻了一遍《STL标准库》,突然醒悟,自己的STL只是出于最初级的应用水平,根本谈不上熟练二字。举个例子: 假如有这样一个vector,原创 2010-07-06 20:22:00 · 1847 阅读 · 5 评论 -
STL空间配置器的适配器
<br />前面讲了simple_alloc和alloc_pool将会作为bbg的STL容器的空间配置器,但是这两个类都不是泛型的,不能为所有类型自动提供内存分配,这时候就需要一个空间配置器的适配器来完成这功能。<br />我们将会通过下面一组预编译的宏,来决定到底是适配到simple_alloc还是alloc_poo。具体做法如下:<br />#defineSIMPLE_ALLOC<br /> <br />#ifdefSIMPLE_ALLOC<br /> typedefsimple_allocall原创 2010-07-12 23:48:00 · 2266 阅读 · 0 评论 -
STL空间构造器
当c++程序用new/delete运算符进行动态内存操作时,编译器为我们准备了两项工作。一是,调用全局内存分配函数 operator new() / operator delete();二是,调用“构造函数”和“析构函数”。下面举个例子说明:Class TestType{Public:TestType(){}~TestType(){}Private: Int m_test;}TestType* ttData = new TestType();对于这里的new分配内存,(1) 编译器调用o原创 2010-07-13 22:01:00 · 1076 阅读 · 0 评论 -
STL迭代器
1.1 STL迭代器1.1.1 STL迭代器的作用<br />迭代器是STL库实现的一个规范,巧妙的利用数学上的[ )符号,即闭区间、开区间,来表示容器所拥有的元素。<br />用户使用迭代器访问容器的元素的时候,简单、易用,可以避免许多错误。<br />代码也会显的紧凑、简洁、美观。<br />迭代器作为STL容器和算法的粘合剂,实现了数据结构和算法的分离。<br />STL库通过迭代器给用户提供访问接口,可以隐藏去多内部实现细节。<br />满足了封装性的设计要求。<br />只要用户遵守ST原创 2010-08-21 10:29:00 · 4199 阅读 · 3 评论