stl源码剖析 详细学习笔记stack queue
来源:互联网 发布:mac系统序列号覆盖 编辑:程序博客网 时间:2024/06/06 20:46
//
// stack.cpp
// 笔记
//
// Created by fam on 15/3/15.
//
//
//---------------------------15/03/15----------------------------
//stack
{
/*
stack概述:
stack只采用deque的底部操作,封装了deque,形成stack
这种方式是常见的adapter设计模式,stack往往不被归类为container
而是被归类为 container adapter
*/
template <class T,class Sequence = deque<T> >
class stack
{
friend booloperator== __STL_NULL_TMPL_ARGS (const stack&,const stack&);
friend booloperator< __STL_NULL_TMPL_ARGS (const stack&,const stack&);
public:
typedef typename Sequence::value_type value_type;
typedef typename Sequence::size_type size_type;
typedef typename Sequence::reference reference;
typedef typename Sequence::const_reference const_reference;
protected:
Sequence c;
public:
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();}
};
template<class T,class Sequence>
bool operator==(const stack<T,Sequence>& x,const stack<T, Sequence>& y)
{
return x.c == y.c;
}
template<class T,class Sequence>
bool operator<(const stack<T,Sequence>& x,const stack<T, Sequence>& y)
{
return x.c<y.c;
}
//stack没有迭代器,所有的元素都必须符合先进后出的条件,所以不提供访问其他元素的迭代器
}
//queue
{
//queue 先进后出 可以用deque作为底层结构
template <class T,class Sequence = deque<T> >
class queue
{
friend booloperator== __STL_NULL_TMPL_ARGS (const stack&,const stack&);
friend booloperator< __STL_NULL_TMPL_ARGS (const stack&,const stack&);
public:
typedef typename Sequence::value_type value_type;
typedef typename Sequence::size_type size_type;
typedef typename Sequence::reference reference;
typedef typename Sequence::const_reference const_reference;
protected:
Sequence c;
public:
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();}
};
template<class T,class Sequence>
bool operator==(const stack<T,Sequence>& x,const stack<T, Sequence>& y)
{
return x.c == y.c;
}
template<class T,class Sequence>
bool operator<(const stack<T,Sequence>& x,const stack<T, Sequence>& y)
{
return x.c<y.c;
}
//queue也没有迭代器
//总结:这两个数据结构毫无难度
}
- stl源码剖析 详细学习笔记stack queue
- STL源码剖析---stack,queue
- STL源码剖析----stack、heap、queue
- stl源码剖析 详细学习笔记heap
- stl源码剖析 详细学习笔记 hashtable
- stl源码剖析 详细学习笔记 配接器
- STL源码剖析之stack,queue容器【2013.11.25】
- STL 源码剖析 queue
- STL 源码剖析 stack
- stl源码剖析 详细学习笔记deque(1)
- stl源码剖析 详细学习笔记deque(2)
- stl源码剖析 详细学习笔记deque(3)
- stl源码剖析 详细学习笔记priority_queue slist
- stl源码剖析 详细学习笔记 RB_tree (1)
- stl源码剖析 详细学习笔记 RB_tree (2)
- stl源码剖析 详细学习笔记 set map
- stl源码剖析 详细学习笔记 hashset hashmap
- stl源码剖析 详细学习笔记 算法总览
- Spring框架入门笔记——深入了解Spring容器的Bean
- 串的模式匹配算法(BF算法和KMP算法)
- postgreSQL 终止正在执行的SQL
- zepto判断左右滑动
- Matrix Variables
- stl源码剖析 详细学习笔记stack queue
- 一个球从距地面100米的地方落下,每次落地后反弹起跳高度为原来的一半,经过10次落地,共经过多少米?第10次反弹多高?
- 【猫猫的Unity Shader之旅】之Unity Shader概述及学习环境搭建
- opencv笔记:K-mean
- 最大连续和2——dp
- 1个键盘输入处理的例子:GetKeyState
- mongodb 数据库连接
- HDU 5186 || 模拟map
- 设计模式—工厂方法