栈的底层与使用
1.堆栈是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,top)进行插入数据(PUSH)和删除数据(POP)的运算。
2.特点:stack是一种容器适配器 支持后进先出 无迭代器
3.stack的底层容器需要支持如下操作:
- empty(判空)
- size(返回有效数据个数)
- push(队尾插入)
- pop (队尾删除)
- top(返回对头元素)
4.stack的底层可以是vector , list , deque(双端队列),默然情况是deque
底层实现:
namespace bit
{template< typename T, typename Container = deque<T> >// 适配器模式 + 类模版class stack{public:void push(const T& x){_com.push_back(x);}bool empty(){return _com.empty();}void pop(){_com.pop_back();}size_t size(){return _com.size();}T& top(){return _com.back();}private:Container _com;};
}
队列的底层与使用
1.队列是一种容器适配器,专门适用于先进先出操作,从一段提取元素,一端插入元素
2.队列的底层容器需要支持以下操作
- size
- empty
- push
- pop
- front
- back
3.queue的底层可以是list , deque ,默然情况是deque
底层实现:
template< typename T, typename Container = deque<T> >class queue{public:void push(const T& x){_com.push_back(x);}bool empty(){return _com.empty();}void pop(){_com.pop_back();}size_t size(){return _com.size();}T& top(){return _com.back();}private:Container _com;};