-
第十三,四节 深度探索list(上,下) list Gnu2.9源代码实现 注意node代码和图示的位置 实现前闭后开,增加一个空白节点 用的分配器alloc Iterator智能指针,需要知道结点node的next指针 除了array和vector,其他容器的iterator都是一个class iteratorclass 实现 必须做至少5个typedef,很多操作符重载 前++++i其中i作为对象,self& operator++(){}返回引用,...…
-
上次做的题只叫一个字惨!刚好抽到了做最后三题,没有一道全部AC掉! 这种题主要是读懂题意,然后抽象成简单的,遇到过得问题。 需要多总结,不然下次还这样!变换次数牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80.问题是,要做多少次变换,使得这个数变成个位数。 输入描述:输入一个整数。小于等于2,000,000,000。输出描述:输出一个整数,表示变换次数。输入例子:285输出例子:...…
-
C++标准库第二讲 体系结构与内核分析 第1-7节为第一讲 读源代码前的准备第八节:源代码分布 C++基本语法 模板的使用 数据结构和算法 本课程主要使用:Gnu C 2.9.1与Gun C 4.9 VS2013中源代码的地址D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include第九节:OOP(面向对编程) VS GP(泛型编程) OOP将数据data和方法methods合在一起 list不能像vec...…
-
第十一节 分配器 分配器的好坏影响到容器的性能 operator new()里面调用malloc D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\crt\srcvc下的源代码路径 分配的内存要比申请的内存大 所以VC6.0下的allocator没有优化// newop operator new(size_t) for Microsoft C++#include <cstdlib>#include <n...…
-
第七节:分配器测试 标准的分配器Allocator,#include<ext/...>都是拓展的 可以用不同的分配器测试同一容器 分配器allocate() & deallocate()进行内存的分配和释放,这样操作太麻烦了 实际用到得new delete malloc free释放时并没有指定分配产生的字节 关于分配器实现需要后续的源码分析 测试#include <list>#include <stdexcept>#include ...…
-
第六节:容器之分类和各种测试(四) stack不提供iterator操作,破坏了容器的独特性,先进先出。使用容器multiset(允许元素重复) 内部是红黑树,insert操作就保证了排好了序。 标准库有个::find()函数,大家都可以用。容器本身也有一个c.find(),通过键值对查找非常快! 测试#include <set>#include <stdexcept>#include <string>#include <cstdlib&g...…
-
目录 目录 好多鱼! AC代码 循环单词 思路分析 AC代码 DNA合成 思路分析 AC代码 连续整数 AC代码 超级素数幂 思路分析 AC代码 序列和 AC代码 页码统计 思路分析 AC代码 01翻转 思路分析 ...…
-
目录 目录 第一节:STL版本和重要资源 第二节:STL六大部件 第三节:容器之分类和各种测试(一) 分类结构 测试Array 第四节:容器之分类和各种测试(二) 测试Vector 第五节:容器之分类和各种测试(三) 测试List,双向链表 测试forward-list,单向链表 测试slist 测试deque 测试stack 测试queue...…
-
目录 目录 快速排序 Qsort实现 表排序 基数排序 桶排序 基数排序 LSD基数排序实现 MSD基数排序实现 总结 Reference快速排序 不稳排序 采用分而治之思想 最好的情况:每次主元正好中分,T(N)=O(NlogN) 最坏情况:每次主元一边倒,T(N)=O(N*N) 选主元 的方法有很多,这里用 取头、中、尾的中位数。 快速排序的之所以快:在于每次对于主元一次就可以放到指定位置 小规模数...…
-
目录 目录 散列表 散列函数的构造方法 数字关键字的散列函数构造 字符关键词的散列函数构造 处理冲突的方法 开放地址法 线性探测法 平方探测法 (Quadratic Probing)— 二次探测 双散列探测法 (Double Hashing) 再散列 (Rehashing) 分离链接法 ...…