使用数组实现栈:
#include <cassert>
#include <cstdlib>
#include <iostream>
using namespace std;
template <class T>
class stack {
public:
typedef size_t size_type;
typedef T value_type;
static const size_type CAPICITY = 30;
stack() {
used = 0;
}
void push(const value_type& val) {
assert(size() < CAPICITY);
data[used++] = val;
}
void pop() {
assert(!empty());
used--;
}
value_type top() {
assert(!empty());
return data[used-1];
}
size_type size() { return used; }
bool empty() { return (used==0); }
private:
size_type used;
value_type data[CAPICITY];
};
使用底层容器实现栈:
#include <deque>
using namespace std;
template <class T, class Sequence = deque<T>>
class stack {
public:
typedef typename Sequence::size_type size_type;
typedef typename Sequence::value_type value_type;
void push(const value_type& val) {
c.push_back(val);
}
void pop() {
c.pop_back();
}
value_type top() {
return c.back();
}
size_type size() { return c.size(); }
bool empty() { return c.empty(); }
private:
Sequence c;
};