SGI STL中list是使用环状双向链表实现的。它的结点结构定义如下: 1 template <class T> 2 struct __list_node { 3 typedef void* void_pointer; 4 void_pointer next; 5 void_pointer pre ...
分类:
其他好文 时间:
2016-10-26 13:24:34
阅读次数:
204
在SGI STL中,vector使用的是连续的内存空间,迭代器使用普通指针来实现。 因为使用的是连续的内存空间,在vector容量不足的时候会直接分配一块新的内存,把原来的元素copy进去,回收原来的内存空间。 因此在vector扩容的时候,原来的所有迭代器都会失效。 vector的实现基本都是围绕 ...
分类:
其他好文 时间:
2016-10-24 09:40:57
阅读次数:
238
在STL中,容器跟算法是分开设计的,算法是通过迭代器来对容器进行操作的。 在算法运用迭代器的时候,可能会用到其相应的型别,例如返回值为容器中元素的型别,又或者说根据迭代器的类型来选择更好的算法等等。 为了实现这一点,还有为了兼容内置型别的迭代器(vector迭代器直接使用原生pointer),STL ...
分类:
其他好文 时间:
2016-10-23 09:44:02
阅读次数:
212
前言 在STL中,容器的定义中都带一个模板参数,如vector 其中第二个参数就是该容器使用的空间配置器,其中缺省使用STL已经实现的空间配置器(alloc), 该配置器使用malloc/free等为vector分配内存。 缺省的空间配置器 alloc定义了两级的空间配置器,第一级是对malloc/ ...
分类:
其他好文 时间:
2016-10-22 17:11:50
阅读次数:
213
STL有6大组件,阅读《STL源码剖析》后,对于我来说主要收货为:内存分配器、迭代器、仿函数。特别是迭代器章节收货最多,其中重中之重为traits机制的运用。 traits技法——STL的入门钥匙 首先必须清楚模板的参数推导机制,例如: ...
分类:
其他好文 时间:
2016-10-20 14:28:42
阅读次数:
144
本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。
推荐阅读:
Left-Leaning Red-Black Trees, Dagstuhl Workshop on Dat...
分类:
其他好文 时间:
2016-08-25 21:50:39
阅读次数:
198
int my_lower_bound(int size, long long key){ int first = 0, middle; int half, len; len = size; while(len > 0) { half = len >> 1; middle = first + half ...
分类:
其他好文 时间:
2016-08-02 14:55:30
阅读次数:
182
原文:STL"源码"剖析-重点知识总结 STL是C++重要的组件之一,大学时看过《STL源码剖析》这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略多 :) 1、STL概述 STL提供六大组件,彼此可以组合套用: 容器(Containers):各种数据结构,如:vector、l ...
分类:
其他好文 时间:
2016-07-17 11:44:46
阅读次数:
181
STL是C++重要的组件之一,大学时看过《STL源码剖析》这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略多 :) 1、STL概述 STL提供六大组件,彼此可以组合套用: 容器(Containers):各种数据结构,如:vector、list、deque、set、map。用来 ...
分类:
其他好文 时间:
2016-07-16 00:09:49
阅读次数:
168