STL----queue
queue 并不属于STL中容器的一种,是一个适配器(adapter),或叫配接器。底层维护一个其他容器,并不自己实现,提供有限的接口。
#include <list>
#include <cassert>
namespace my
{
template<class T>
class queue
{
public:
queue() {}
queue(const queue<T>& que)
{
std::list<T> tmp(que._data);
_data.swap(tmp);
}
void push(const T& x)
{
_data.push_back(x);
}
void pop()
{
assert(!_data.empty());
_data.pop_front();
}
T& front()
{
assert(!_data.empty());
return _data.front();
}
const T& front() const
{
assert(!_data.empty());
return _data.front();
}
T& back()
{
assert(!_data.empty());
return _data.back();
}
const T& back() const
{
assert(!_data.empty());
return _data.back();
}
size_t size() const
{
return _data.size();
}
bool empty() const
{
return _data.empty();
}
void print()
{
while (!_data.empty())
{
std::cout << _data.front() << " ";
_data.pop_front();
}
std::cout << std::endl;
}
private:
std::list<T> _data;
};
}