partition
------------------------------------------------------------------------
描述:partition 会将区间[first,last) 中的元素重新排列。所有被一元条件运算 pred 判定为 true 的元素,都会被放在区间的前段,
被判定为 false 的元素,都会被放在区间的后段。
partition 不稳定,不保证 partition 后元素保留在原始相对位置, stable_partition 稳定
思路:
...
分类:
其他好文 时间:
2014-07-19 08:26:15
阅读次数:
248
search
-------------------------------------------------------------------------
描述:在序列一[first1, last1) 所涵盖的区间中,查找序列二[first2, last2) 的首次出现点。
思路:
1.遍历序列二
2.如果两序列的当前元素一样,都前进 1
3.否则序列二的迭代器重新指向开始元素,序列一前进 1 ,序列一的长度减 1
复杂度:
最坏情况是平方: 最多 (last1 - first1) * (last2...
分类:
其他好文 时间:
2014-07-19 08:20:52
阅读次数:
212
includes(应用于有序区间)
-------------------------------------------------------------
描述:S1和S2都必须是有序集合,判断序列二 S2 是否"涵盖于"序列一 S1,即"S2的每一个元素是否都出现于 S1中"
思路:
1.遍历两个区间,直到其中一个走完
2.如果序列二的元素小于序列一的元素,则在序列一中不可能有元素等于序列二的当前元素了,直接返回 false
3.如果序列一的元素小于序列二的元素,则序列一前进 1
4.如果两序列元...
分类:
其他好文 时间:
2014-07-19 08:05:28
阅读次数:
180
rotate
--------------------------------------------------------------
描述:将[first, middle) 内的元素和[middle, last) 内的元素互换。
图6-6g
/*------------------------------------------------------------
*分派函数(dispatch function)
*/
template
inline ...
分类:
其他好文 时间:
2014-07-19 08:00:26
阅读次数:
259
唯一对外接口
/*--------------------------------------------------------------------------------------
* copy 函数及其重载形式
*/
//完全泛化版本。
template // ? 这里的 InputIterator 和 OutputIterator 都只是名称而已,哪里确保了它们真的至少是 InputIterator 和 O...
分类:
其他好文 时间:
2014-07-18 22:39:22
阅读次数:
302
描述、源码、示例
version 1:普通操作版本
version 2: 泛化操作版本
1.accumulate
描述:计算 init 和 [first, last) 内所有元素的总和
源码:
//version 1
template
T accumulate(InputIterator first, InputIterator last, T init) {
for ( ; first != last; ++first)
ini...
分类:
其他好文 时间:
2014-07-18 22:16:32
阅读次数:
283
1.iter_swap
描述:将两个 ForwardIterator 所指的对象对调
源码:
//version 1
template
inline void __iter_swap(ForwardIterator1 a, ForwardIterator2 b, T*) {
T tmp = *a;
*a = *b;
*b = tmp;
}
//version 2
template...
分类:
其他好文 时间:
2014-07-18 21:32:42
阅读次数:
244
STL源码之vector1. SGI的vectorSGI stl vector继承子一个基类:template > class vector : protected _Vector_base在基类中定义了基本的一些操作,并且封装了了vector所需要的基本的三个指针:struct _Vector_....
分类:
其他好文 时间:
2014-07-13 23:19:35
阅读次数:
188
教你透彻了解红黑树 作者:July、saturnman 2010年12月29日 本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术 推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wa...
分类:
其他好文 时间:
2014-07-11 09:55:10
阅读次数:
357
STL源码剖析---根据最新版本的g++4.9.0(支持C++11)的修订(1)空间配置器 源码剖析采用的G++版本为2.91.57版本,是比较老的版本与最新版本4.9.0有某些方面的差别。现在我针对最新版本做一个分析。我下载了最新的gcc-4.9.0的包作为观察对象: 我们#include 时的头...
分类:
编程语言 时间:
2014-07-01 21:21:18
阅读次数:
582