stack是一种容器适配器,是基于双端队列(deque)实现的。
stack的头文件#include <stack>
由于stack具有先进后出的原则,所以操作也是符合这个原则这样实现的
一. 使用
1.push
2.pop
3.top
4.size
5.empty
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int>st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
st.push(5);
cout<<st.size()<<endl;
cout << st.top() << endl;
st.pop();
cout << st.top() << endl;
cout << st1.top() << endl;
cout<<st1.empty()<<endl;
}
二.模拟实现
由于stack底层是deque,所以所有的方法都可以通过deque来实现
template<typename T,class Cont = deque<T>>
class Stack
{
public:
explicit Stack()
{}
bool empty()const
{
return c.empty();
}
size_t size()const
{
return c.size();
}
T& top()
{
return c.back();
}
const T& top()const
{
return c.back();
}
void push(const T&value)
{
c.push_back(value);
}
void pop()
{
c.pop_back();
}
protected:
Cont c;
};
int main()
{
Stack<int> st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
st.push(5);
cout << st.top() << endl;
cout << st.size()<< endl;
cout << st.empty() <<endl;
st.pop();
return 0;
}