![这里写图片描述](https://img-blog.csdn.net/20170331195139913?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQUREdzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
stack(堆栈)的简单使用
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> st;
stack<int> st1;
st.push(1);
st.push(2);
st.push(3);
st1.push(1);
st1.push(2);
st1.push(3);
st1.push(4);
st.swap(st1);
st.emplace();
st1.emplace();
if (st == st1)
{
cout << "两个容器相等" << endl;
}
if (st < st1)
{
cout << "st1大" << endl;
}
cout << st.size() << endl;
cout << st.top() << endl;
st.pop();
st.top() = 12;
st.push(11);
st.push(22);
cout << st.top() << endl;
while (!st.empty())
{
cout << st.top() << endl;
st.pop();
}
return 0;
}
stack的定义
namespace std
{
template <class T,class Container = deque<T>>
class stack{};
}
template <class T, class Container = deque<T> >
class stack
{
friend bool operator== (const stack&, const stack&);
friend bool operator< (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:
Container 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;
}