stack的特点:
- stack在C++Reference里面有5个函数,分别是:empty(),size(),top(),push(),pop()。
- stack在数据进出时是:先进后出、后进先出。利用vector实现可以利用里面的push_back()和pop_back()函数实现。
代码如下:
template<class T,class Stacktype = vector<T>>
class Stack
{
public:
Stack()
:s(NULL)
{}
void Push(T d)
{
s.push_back(d);
}
void Pop()
{
if (s.size())
s.pop_back();
}
size_t Size()
{
return s.size();
}
T& Top()
{
return *(s.begin());
}
bool Empty()
{
return s.empty();
}
private:
Stacktype s;
};
queue的特点:
1、queue的特点是先进先出,后进后出
2、如果利用vector实现的话在pop时候那么在pop元素后面的元素需要向前移动,效率不高。如果利用list实现的,就完全可以避免移动元素的问题。
代码如下:
template<class T,class Queuetype = list<T>>
class Queue
{
public:
Queue()
:q(NULL)
{}
void Push(T d)
{
q.push_back(d);
}
void Pop()
{
if (q.size())
q.pop_front();
}
size_t Size()
{
return q.size();
}
bool Empty()
{
return q.empty();
}
T& Front()
{
return *(q.begin());
}
private:
Queuetype q;
};
但是在C++标准库里面的stack和queue并不是利用vector和list实现的,小编水平有限在这里就不一一实现了