stack:需要注意的是stack中的push为deque中的push_back,而且deque表示最后一个元素为ku.back();[假设ku为deque类型]而不是stack中
的end()!
#include<iostream>
#include<deque>
using namespace std;
template <typename T> class MyStack : private deque<T> {
public:
bool empty() const {
if (ku.empty())
return true;
return false;
}
int size() const {
return ku.size();
}
T top() {
return ku.back(); // 一定要使用.back!,不能使用.end()!
}
const T top()const {
return ku.back();
}
void push(const T& x) {
ku.push_back(x);
}
void pop() {
ku.pop_back();
}
private:
deque<T>ku;
};
queue:
注意push_back()和pop_front()
#include<iostream>
#include<list>
using namespace std;
template <typename T> class Queue : private list<T>{
public:
bool empty()const {
if (ku.empty())
return true;
return false;
}
bool full()const {
if (ku.size() == ku.max_size())
return true;
return false;
}
int size()const {
return ku.size();
}
void push(const T &x) {
ku.push_back(x);
}
void pop() {
ku.pop_front();
}
const T & front()const {
return ku.front();
}
private:
list<T>ku;
};