stl源码学习
来源:互联网 发布:冰淇淋挖球器 知乎 编辑:程序博客网 时间:2024/04/27 22:42
template参数推导,智能推到参数的类型,不能推导返回值。
原生指针也是一种迭代器,支持* ,->,++等操作
stl中的sort方式,只对能够randomaccess的迭代子。对于list slist这样的迭代子的排序方法,是单独提供的。
对于list,简单的想法就是通过不断merge操作,实现排序,保证效率,则每次merger的list大小尽量相等。
所以伪代码:
sort() {
list ladder[64];
list floor;
int top_ladder = 0;
while (!empty()) {
floor.splice(floor.begin(), this, begin()) //获取一个元素到floor中
//开始merge历程
int i=0;
while(i < top_ladder&& !ladder[i].empty()) {
floor.merge(ladder[i]);
i++;
}
floor.swap(ladder[i]);
if(i==top_ladder)topladder++;
}
for (i=0;i<top_ladder-2;i++){
ladder[i+1].merge(ladder[i])
}
}
这个算法的思想,就是“滚雪球”, 每个ladder上能够放2^n大小的雪球,每次从floor往上滚,“滚”其实就是merge,当滚不了了(下一个ladder为空),就不滚了。
这样,最后,将各个ladder上雪球,无条件滚到最后,就是最后的结果了。
- STL源码学习,开篇。
- SGI STL源码学习
- STL 源码学习
- stl源码学习
- stl allocator源码学习
- STL源码学习笔记
- 侯捷《STL源码剖析》--STL学习笔记
- 《STL源码剖析》学习备忘
- stl-stable_sort源码学习笔记
- stl-stable_sort源码学习笔记
- 《STL源码剖析》学习--traits
- STL源码学习----内存管理
- C++ STL源码学习(迭代器篇)
- STL源码学习(vector篇)
- STL::vector的源码学习
- STL源码学习之迭代器
- 《STL源码剖析学习笔记》
- 《STL源码剖析》学习笔记
- 欢迎使用CSDN-markdown编辑器
- JDBC编程简明教程
- Invert Binary Tree
- linux shell(一)
- 继承
- stl源码学习
- 点击按钮改变textField的状态
- Leetcode Basic Calculator 系列
- 四位计算机的原理及其实现
- hadoop入门:2.Hadoop-1.12伪分布环境搭建
- unix标准出错输出文件stderr
- LTView
- 集群间 Hive 数据 迁移 问题
- Valid Palindrome