STL源码阅读(五)
来源:互联网 发布:c 程序员职业规划 编辑:程序博客网 时间:2024/05/01 20:34
STL源码阅读(五) (SGI STL v3.3)
stl_stack.h (<stack>)
// 容器适配器stacktemplate <class _Tp, class _Sequence = std::deque<_Tp>>class stack { _Sequence c; ... // 注意stack的函数接口的实现 // 即_Sequence需要实现back, push_back, pop_back, empty, size接口 bool empty() const { return c.empty(); } size_type size() const { return c.size(); } reference top() { return c.back(); } const_reference top() const { return c.back(); } void push(const value_type& __x) { c.push_back(__x); } void pop() { c.pop_back(); } ...}
stl_queue.h (<queue>)
// 容器适配器queuetemplate <class _Tp, class _Sequence = std::deque<_Tp>>class queue { _Sequence c; ... // 注意queue的函数接口实现 // 即_Sequence需要实现back,front,push_back, pop_back, empty, size接口 bool empty() const { return c.empty(); } size_type size() const { return c.size(); } reference front() { return c.front(); } const_reference front() const { return c.front(); } reference back() { return c.back(); } const_reference back() const { return c.back(); } void push(const value_type& __x) { c.push_back(__x); } void pop() { c.pop_front(); } ...}
// 容器适配器priority_queuetemplate <class _Tp, class _Sequence __STL_DEPENDENT_DEFAULT_TMPL(vector<_Tp>), class _Compare __STL_DEPENDENT_DEFAULT_TMPL(less<typename _Sequence::value_type>) > { _Sequence c; _Compare comp; ... // _Sequence需要实现front, push_back, pop_back, empty, size接口 // 此外由其构造函数,可知priority_queue是以堆实现的,而make_heap需要随机迭代器, // 因此_Sequence的迭代器类型应该是random_access_iterator_tag priority_queue(const _Compare& __x, const _Sequence& __s) : c(__s), comp(__x) { make_heap(c.begin(), c.end(), comp); } ...}
参考资料
- sgi STL
- cppreference.com
0 0
- STL源码阅读(五)
- STL源码阅读 -- basic_string
- STL源码阅读-allocator
- STL源码阅读-iterator
- STL源码阅读-vector
- STL源码阅读-list
- STL源码阅读-deque
- STL源码阅读-hashtable
- STL源码阅读(一)
- STL源码阅读(二)
- STL源码阅读(三)
- STL源码阅读(四)
- STL源码阅读(六)
- STL源码阅读(七)
- STL源码阅读(八)
- STL源码阅读(九)
- STL 源码阅读
- pg源码阅读五
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- linux中fork()函数详解
- java写文件中并发和乱码问题解决
- android N编译遇到的问题
- LibSVM 在matlab中的使用
- STL源码阅读(五)
- nginx location正则写法
- 最大流 isap 模板
- eclipse构建maven的web项目
- iOS 如何pop到指定页面
- iOS开发之AFNetworking 3.0.4使用
- SQL SERVER 关于死锁问题相关整理(一)
- android...View的点击事件传递详解,
- MySQL建表语句