【2014-07-14】C++ STL读书笔记:stl_stack.h
2026/9/7 7:55:10 网站建设 项目流程

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2014-07-14| 标题:C++ STL读书笔记:stl_stack.h分类:编程 / C && C++ / C++ STL |标签:C&&C++·stl·deque·stack


C++ STL读书笔记:stl_stack.h

    • 备注:
    • stl\_stack.h:

备注:

本读书笔记基于侯捷先生的《STL源码剖析》,截图和注释版权均属于原作者所有。
本读书笔记中的源码部分直接拷贝自SGI-STL,部分代码删除了头部的版权注释,但代码版权属于原作者。
小弟初看stl,很多代码都不是太懂,注释可能有很多错误,还请路过的各位大牛多多给予指导。
为了降低学习难度,作者这里换到了SGI-STL-2.91.57的源码来学习,代码下载地址为【 http://jjhou.boolan.com/jjwbooks-tass.htm 】

stack是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈是只能在某一端插入和删除的特殊线性表。

由于STL中已经实现了很多比较通用的数据结构,因此stack可以直接在这些数据结构上套个壳。这里笔记下源码,比较简单:

stl_stack.h:

#ifndef__STL_LIMITED_DEFAULT_TEMPLATEStemplate<classT,classSequence=deque<T>>//默认stack的底层实现是deque。#elsetemplate<classT,classSequence>#endifclassstack{friendbooloperator==__STL_NULL_TMPL_ARGS(conststack&,conststack&);friendbooloperator<__STL_NULL_TMPL_ARGS(conststack&,conststack&);public:typedeftypenameSequence::value_type value_type;typedeftypenameSequence::size_type size_type;typedeftypenameSequence::reference reference;typedeftypenameSequence::const_reference const_reference;protected:Sequence c;//这里是stack的内部数据存储位置。public://通过调用底层实现库的方法,来对外实现stack。boolempty()const{returnc.empty();}size_typesize()const{returnc.size();}referencetop(){returnc.back();}const_referencetop()const{returnc.back();}voidpush(constvalue_type&x){c.push_back(x);}voidpop(){c.pop_back();}};template<classT,classSequence>booloperator==(conststack<T,Sequence>&x,conststack<T,Sequence>&y){returnx.c==y.c;}template<classT,classSequence>booloperator<(conststack<T,Sequence>&x,conststack<T,Sequence>&y){returnx.c<y.c;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询