stack(仿sgi stl)
来源:互联网 发布:网络规划设计师 论文 编辑:程序博客网 时间:2024/05/21 04:20
#include <iostream>#include <deque>using namespace std;template <typename T, typename Sequence = deque<T>>class stack // stack内部使用默认容器deque {friend bool operator== <T> (const stack &x, const stack &y);friend bool operator< <T> (const stack &x, const stack &y);public:typedef typename Sequence::size_type size_type; // 一种类型 足以保存当前类型的最大对象的大小typedef typename Sequence::value_type value_value; // 元素类型typedef typename Sequence::reference reference; // 元素的引用typedef typename Sequence::const_reference const_reference; // 元素的常量引用 protected:Sequence c; // 实际维护的容器public:stack() : c(){} // 默认构造函数 构造一个空栈stack(const Sequence &s) : c(s){} // 接受一个容器的构造函数// 下面的操作完全使用内部容器的成员函数实现bool empty() const // 若a包含任何元素但会false 否则返回true{return c.empty();}size_type size() const // 返回a中元素的数目{return c.size();}reference top() // 返回栈顶元素 但不将元素出栈{return c.back();}const_reference top() const // 重载版本{return c.back();}void push(const value_value &x) // 压栈{ c.push_back(x);}void pop() // 出栈 { c.pop_back();}};template <typename T, typename Sequence>bool operator==(const stack<T, Sequence> &x, const stack<T, Sequence> &y){return x.c == y.c;}template <typename T, typename Sequence>bool operator<(const stack<T, Sequence> &x, const stack<T, Sequence> &y){return x.c < y.c;}template <typename T, typename Sequence>bool operator!=(const stack<T, Sequence> &x, const stack<T, Sequence> &y){return !(x == y);}template <typename T, typename Sequence>bool operator>(const stack<T, Sequence> &x, const stack<T, Sequence> &y){return x < y;}template <typename T, typename Sequence>bool operator<=(const stack<T, Sequence> &x, const stack<T, Sequence> &y){return !(y < x);}template <typename T, typename Sequence>bool operator>=(const stack<T, Sequence> &x, const stack<T, Sequence> &y){return !(y < x)}int main(){stack<int> intstack;for (size_t ix = 0; ix != 10; ++ix){intstack.push(ix);}while (!intstack.empty()){int value = intstack.top();intstack.pop();cout << value << " ";}}
0 0
- stack(仿sgi stl)
- vector (仿sgi stl)
- queue(仿sgi stl)
- list (仿sgi stl)
- priority_queue (仿sgi stl) 纯手打 累死TMD
- SGI STL空间配置器(STL源码剖析):
- SGI STL空间配置器(STL源码剖析)
- SGI STL(一)——初识STL
- hash表 拉链法 仿sgi stl 非模板简单实现
- SGI STL安装
- SGI STL内存池
- SGI STL 安装
- sgi stl 之list
- SGI STL 内存管理
- SGI STL源码学习
- SGI STL中的construct
- SGI STL容器概述
- SGI-STL 迭代器实现
- 数字信号处理中各种频率关系
- Python学习之循环语句
- 学习FPGA的网站推荐
- 2-SAT算法
- 论C#如何实现多继承
- stack(仿sgi stl)
- 常见算法在实际项目中的应用
- 仿酷狗音乐播放器开发日志二十六 duilib在标题栏弹出菜单的方法
- 基于opencv网络摄像头在ubuntu下的视频获取
- 配置ssh公钥访问oschina
- 搭建vps过程中的各种小问题
- 【graceup系列】--WebRTC
- 使用接插件需要注意的问题
- PAT 1061,1062,1063,1064