栈的底层与使用
1.堆栈是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,top)进行插入数据(PUSH)和删除数据(POP)的运算。
2.特点:stack是一种容器适配器 支持后进先出 无迭代器
3.stack的底层容器需要支持如下操作:
- empty(判空)
- size(返回有效数据个数)
- push(队尾插入)
- pop (队尾删除)
- top(返回对头元素)
4.stack的底层可以是vector , list , deque(双端队列),默然情况是deque
底层实现:
cpp
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
底层实现:
cpp
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;
};