STL源代码学习
sanlongcai
这个作者很懒,什么都没留下…
展开
-
《STL 源码剖析》之剖析内存的一点补充
内存就好像稀缺资源,永远也没法满足需求,只能对其进行高效而合理的配置和使用。要用好内存好的管理方法必不可少,现在比较广泛的方法是内存池。不同的内存池管理方法的实现各有其特点,SGI allocator分配器也不例外。SGI分配器没有适时调用原始的free释放一些blocks,侯捷老师对此说法是“这是 SGI allocator 值得加强的部分”。但是现有SGI分配器代码对此能不能加强?有原创 2007-09-09 00:13:00 · 1206 阅读 · 0 评论 -
type traits 之"本质论"
侯捷老师在《STL 源码剖析》说:traits编程方法是一把开启STL源代码大门的钥匙,其重要性也就不必再说了。既然traits编程方法如此重要,那么掌握并领悟其精髓是相当必要了。 trait的意思是什么?英文意思是attribute,feature等等,中文意思可以解释为特点, 特性。那么type trait就是类型的特性。那什么是类型?类型的特性又有哪些呢?类型也即是用户自原创 2007-09-15 20:53:00 · 5359 阅读 · 0 评论 -
有感于auto_ptr背后的一个思想----RAII
auto_ptr的一个重要思想是RAII.RAII是"Resource Acquisition Is Initialisation"的简称,有人把它翻译成"资源获取即初始化",但我更喜欢用理解的方式把RAII看成是利用对象的生命周期管理资源。RAII思想不只是局限于C++语言,但毫无疑问它跟C++是绝配。 RAII这一思想,特别是运用在C++语言上,不仅实用、简单,而且原创 2007-10-04 19:43:00 · 1002 阅读 · 0 评论 -
vector中resize和reserve接口的异同
初次接触这两个接口也许会混淆,其实接口的命名就是对功能的绝佳描述,resize就是重新分配大小,reserve就是预留一定的空间。这两个接口即存在差别,也有共同点。下面就它们的细节进行分析。 为实现resize的语义,resize接口做了两个保证: 一是保证区间[0, new_size)范围内数据有效,如果下标index在此区间内,vector[indext]原创 2007-10-05 20:28:00 · 797 阅读 · 0 评论 -
《STL 源码剖析》之剖析stl_tree的一点补充
C语言程序员的困惑--const、referenc、pointer混合使用: 先看下面的方法: __rb_tree_rotate_left(__rb_tree_node_base* x, __rb_tree_node_base*& root)参数类型 "__rb_tree_node_base*&" 表示什么意思呢?它表示RB_tree节点指针的引用,如果在方法中修改了指针root原创 2007-10-27 15:29:00 · 1651 阅读 · 0 评论 -
用模板机制实现模式--工厂模式实例作导向分析
看完《STL源码剖析》所描述的Sequence容器,觉得容易让人忽略的但又是很重要的一个思想是:使用模板机制来实现iterator模式。这思想与其说是用模板机制实现iterator模式,还不如说是用模板机制实现模式,更应说是模板机制和面向对象思想可以成为绝配--面向对象思想和泛型思维的溶合。面向对象思想和泛型思维的结合使用,更具体点是模板机制和模式的结合使用或许早就被高手们"大肆"使用,但原创 2007-10-14 19:04:00 · 937 阅读 · 1 评论 -
STL中序列容器、iterator相关的架构
在看stl相关的构架时,有几个泛形编程的概念是需要注意的:Concepts、Models、Lifting。一种简单的理解方式是把concept看成是面向对象的类,把models看成是继承或实例化,lifting相当于是一种抽象方法与models刚好相反。STL中的iterator的实现,代码中没有基类,但概念上是存在基类的。每种iterator都是一个concept,它们形成了概念上的继承关系原创 2007-10-13 20:13:00 · 881 阅读 · 0 评论