码迷,mamicode.com
首页 >  
搜索关键字:stl源码剖析    ( 238个结果
STL 源码剖析 算法 stl_algo.h -- binary_search
int main() { int A[] = { 1, 2, 3, 3, 3, 5, 8 }; const int N = sizeof(A) / sizeof(int); for (int i = 1; i <= 10; ++i) { cout << "Searching for " << i << ": " << (binary_search(A, A + N, i) ? "present" : "not present") << endl; } } /* ...
分类:其他好文   时间:2014-07-19 23:29:59    阅读次数:275
STL 源码剖析 算法 stl_algo.h -- next_permutation
next_permutation ----------------------------------------------------------------------- 描述: 取得 [first, last) 所标示之序列的下一个排列组合。如果没有,返回 false,有,返回true 思路: 从后往前 1.找两个相邻元素,令左端的元素为*i,右端的元素为*ii,且满足 *i < *ii 2.找出第一个大于 *i 的元素,令其为 *j,将*i,*j元素对调 3.将ii右端的所有元素颠倒 源码: t...
分类:其他好文   时间:2014-07-19 23:29:37    阅读次数:383
STL 源码剖析 算法 stl_algo.h -- partition
partition ------------------------------------------------------------------------ 描述:partition 会将区间[first,last) 中的元素重新排列。所有被一元条件运算 pred 判定为 true 的元素,都会被放在区间的前段, 被判定为 false 的元素,都会被放在区间的后段。 partition 不稳定,不保证 partition 后元素保留在原始相对位置, stable_partition 稳定 思路: ...
分类:其他好文   时间:2014-07-19 08:26:15    阅读次数:248
STL 源码剖析 算法 stl_algo.h -- includes
search ------------------------------------------------------------------------- 描述:在序列一[first1, last1) 所涵盖的区间中,查找序列二[first2, last2) 的首次出现点。 思路: 1.遍历序列二 2.如果两序列的当前元素一样,都前进 1 3.否则序列二的迭代器重新指向开始元素,序列一前进 1 ,序列一的长度减 1 复杂度: 最坏情况是平方: 最多 (last1 - first1) * (last2...
分类:其他好文   时间:2014-07-19 08:20:52    阅读次数:212
STL 源码剖析 算法 stl_algo.h -- merge
merge (应用于有序区间) -------------------------------------------------------------------------- 描述:将两个经过排序的集合S1和S2,合并起来置于另一段空间。所得结果也是一个有序(sorted)序列 思路: 1.遍历两个序列直到其中一个结束了 2.如果序列一的元素较小,将它放到结果序列中,并前进 1 3.如果序列二的元素较小,将它放到结果序列中,前前进 1 4.遍历结束后,将还没有遍历完的序列复制到结果序列的尾部 源码:...
分类:其他好文   时间:2014-07-19 08:16:09    阅读次数:212
STL 源码剖析 算法 stl_algo.h -- includes
includes(应用于有序区间) ------------------------------------------------------------- 描述:S1和S2都必须是有序集合,判断序列二 S2 是否"涵盖于"序列一 S1,即"S2的每一个元素是否都出现于 S1中" 思路: 1.遍历两个区间,直到其中一个走完 2.如果序列二的元素小于序列一的元素,则在序列一中不可能有元素等于序列二的当前元素了,直接返回 false 3.如果序列一的元素小于序列二的元素,则序列一前进 1 4.如果两序列元...
分类:其他好文   时间:2014-07-19 08:05:28    阅读次数:180
STL 源码剖析 算法 stl_algo.h -- rotate
rotate -------------------------------------------------------------- 描述:将[first, middle) 内的元素和[middle, last) 内的元素互换。 图6-6g /*------------------------------------------------------------ *分派函数(dispatch function) */ template inline ...
分类:其他好文   时间:2014-07-19 08:00:26    阅读次数:259
STL 源码剖析 stl_numeric.h -- copy
唯一对外接口 /*-------------------------------------------------------------------------------------- * copy 函数及其重载形式 */ //完全泛化版本。 template // ? 这里的 InputIterator 和 OutputIterator 都只是名称而已,哪里确保了它们真的至少是 InputIterator 和 O...
分类:其他好文   时间:2014-07-18 22:39:22    阅读次数:302
STL 源码剖析 stl_numeric.h
描述、源码、示例 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
STL 源码剖析 stl_algobase.h
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
238条   上一页 1 ... 21 22 23 24 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!