队列是先进先出的特性,这里要支持vector、list、deque等等,这里queue和stack模拟实现,都是直接复用
template >
Container _container;
void push(const T& val)
{_container.push_back(val);
}
void pop()
{_container.pop_front();
}
const T& front()
{return _container.front();
}
const T& back()
{return _container.back();
}
size_t size()
{return _container.size();
}
bool empty()
{return _container.empty();
}
就拿push()来说,_contatiner.push_back(val);假设 _Container是list类型,那么 _container就是list类型,这时 _container直接调用库接口push_back();
namespace my_queue
{template >class queue{public:void push(const T& val){_container.push_back(val);}void pop(){_container.pop_front();}const T& front(){return _container.front();}const T& back(){return _container.back();}size_t size(){return _container.size();}bool empty(){return _container.empty();}private:Container _container;};
}
template >
Container _container;
void push(const T& val)
{_container.push_back(val);
}
void pop()
{_container.pop_back();
}
const T& top()
{return _container.back();
}
const T& back()
{return _container.back();
}
size_t size()
{return _container.size();
}
bool empty()
{return _container.empty();
}
namespace my_stack
{template >class stack{public:void push(const T& val){_container.push_back(val);}void pop(){_container.pop_back();}const T& top(){return _container.back();}const T& back(){return _container.back();}size_t size(){return _container.size();}bool empty(){return _container.empty();}private:Container _container;};
}