STL源码剖析—算法
在STL中的算法中一些算法是可以根据算法名字来判断算法作用的。所有算法的参数都是迭代器,不过不同的算法调用的迭代器类型也是不同的。多有的STL算法都作用在由迭代器{first,lase)所表示出来的区间上。拷贝(copy)交换(swap)替换(replace)填写(fill)删除(remove)排列组合(permutation)分割(partition)随...
分类:
编程语言 时间:
2014-12-13 19:27:32
阅读次数:
198
STL是建立在泛化之上的。数组泛化为容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所用的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。STL中的六大组件:容器、算法、迭代器、配置器、适配器、仿函数。
这六大组件中在容器中分为序列式容器和关联容器两类,正好作为STL源码剖析这本书的内容。迭代器是容器和算法之间的胶合剂,从实现的角度来看,迭代器是一种将operator*、o...
分类:
其他好文 时间:
2014-12-13 19:26:19
阅读次数:
126
STL源码分析—仿函数 & 配接器
仿函数就是函数对象。就实现观点而言,仿函数其实就是一个“行为类似函数”的对象。为了能够“行为类似函数”,其类别定义中必须自定义(或说改写。重载)function call 运算子(operator()),拥有这样的运算子后,我们就可以在仿函数的对象后面加上一对小括号,以此调用仿函数所定义的operator()。仿函数作为可配接的关键因素。
...
分类:
其他好文 时间:
2014-12-13 19:26:02
阅读次数:
193
STL源码剖析---关联容器
标准关联容器分为set和map两大类,包括multiset和multimap,这些容器的底层机制都是RB-tree.标准之外的关联容器有hashtable 以及以此hash table为底层机制而完成的hash_set(散列集合) hash_map(散列映射表) hash_multiset hash_multimap.
序列和关联容器各自的内部...
分类:
其他好文 时间:
2014-12-09 23:11:43
阅读次数:
465
STL源码剖析—序列容器
对于STL中的容器,存在一定的内含关系,例如,heap内含一个vector,priority-queue内含一个hep,stack和queue都含有一个deque,set/map/multiset/multimap都内含一个RB-tree,hash_x都内含一个hashtable。
对于序列容器来说,vector和list的插入都是在指向迭代器之前进...
分类:
其他好文 时间:
2014-12-08 23:03:18
阅读次数:
273
STL源码剖析—迭代器与traits编程方法
STL的中心思想就是将算法和容器分开,彼此独立设计,最后再以粘合在一起,算法和容器的泛型化,并不是很难,C++的class templates和function templates可以达成目标,但是粘合在一起就是迭代器的事情。
这么一说迭代器就是为了粘合算法和容器的,如果单独设计迭代器,那么这个迭代器就必须知道某...
分类:
其他好文 时间:
2014-12-08 21:29:03
阅读次数:
161
STL是建立在泛化之上的。数组泛化为容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所用的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。STL中的六大组件:容器、算法、迭代器、配置器、适配器、仿函数。
这六大组件中在容器中分为序列式容器和关联容器两类,正好作为STL源码剖析这本书的内容。迭代器是容器和算法之间的胶合剂,从实现的角度来看,迭代器是一种将operator*、o...
分类:
其他好文 时间:
2014-12-08 00:55:58
阅读次数:
213
图解STL内存管理的两种边界情况(STL源码剖析补充)
第一种情况就是内存池剩余的小字节空间怎么处理,会不会有内存泄露,答案肯定是不会,但是这个过程是怎么处理的,以下的代码已经简化处理,直接放到VS2010里就可以运行
#include
#include
static const size_t __ALIGN=8;
static const size_t __MAX_B...
分类:
其他好文 时间:
2014-12-04 08:51:29
阅读次数:
161
一直以来学习排序算法, 都没有在链表排序上下太多功夫,因为用得不多。最近看STL源码,才发现,原来即使是链表,也能有时间复杂度为O(nlogn)的算法,大大出乎我的意料之外,一般就能想到个插入排序。下面的代码就是按照源码写出的(去掉了模板增加可读性),注意forward_list是C++11新加的单...
分类:
编程语言 时间:
2014-11-20 21:48:34
阅读次数:
602