目录
前言
queue类就是数据结构中的队列
queue的性质还是FIFO先进先出
queue类和stack类大的实现方式不一样,但是可以说是大差不差,都是复用其他容器来完成类
C++:stack类(vector和list优缺点、deque)-CSDN博客
数据结构
template<class T, class Container = std::deque<T>>
class queue
{
public:
private:
Container _con;
};
和实现stack时一致
区别就是这里的容器vector就不能参与进来了
因为队列是需要头删的,但是vector由于头删的效率很慢,并不支持头删,所以这里的容器Container并不能使用vector
也就是说我们的队列不能用vector来实现,deque和list都还是可以的
push
void push(const T& x)
{
_con.push_back(x);
}
队列的push就是尾插,使用push_back函数即可
pop
void pop()
{
_con.pop_front();
}
队列的pop就是头删,使用pop_back即可(就是由于vector库里并没有pop_front的实现,所以不能用vector来实现queue)
front
const T& front() const
{
return _con.front();
}
队列的front就是返回队头数据,返回front函数即可
back
const T& back() const
{
return _con.back();
}
队列的back就是返回队尾数据,返回back函数即可
size
size_t size() const
{
return _con.size();
}
队列的size就是返回队列元素个数,返回size函数即可
empty
bool empty() const
{
return _con.empty();
}
队列的empty就是判断队列是否为空,返回empty函数即可
完整代码
#pragma once
#include<iostream>
#include<deque>
namespace lyw
{
template<class T, class Container = std::deque<T>>
class queue
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_front();
}
const T& front() const
{
return _con.front();
}
const T& back() const
{
return _con.back();
}
size_t size() const
{
return _con.size();
}
bool empty() const
{
return _con.empty();
}
private:
Container _con;
};
}
完