queue的介绍使用及模拟实现
1、queue的介绍
1、队列是一种容器适配器,其特点是先进先出
2、队列提供的操作有判空、返回队首队尾元素、入队、出队等操作
3、队列的底层默认使用deque实现
2、queue的基本操作
函数声明 | 接口说明 |
---|---|
queue() | 构造空的队列 |
empty() | 检测队列是否为空,是返回true,否则返回false |
size() | 返回队列中有效元素的个数 |
front() | 返回队头元素的引用 |
back() | 返回队尾元素的引用 |
push() | 在队尾将元素val入队列 |
pop() | 将队头元素出队列 |
#include <iostream>
#include <queue>
using namespace std;
void TestQueue1()
{
queue<int> q1;//构造q1
queue<int> q2;//拷贝构造q2
}
void TestQueue2()
{
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
cout << q.empty() << endl;
cout << q.size() << endl;
cout << q.front() << endl;
cout << q.back() << endl;
q.pop();
cout << q.empty() << endl;
cout << q.size() << endl;
cout << q.front() << endl;
cout << q.back() << endl;
}
int main()
{
TestQueue1();
TestQueue2();
system("pause");
return 0;
}
3、queue的模拟实现
queue.h
#include <iostream>
#include <deque>
using namespace std;
namespace gwp
{
template<class T, class Con = deque<T>>
class queue
{
public:
queue()
{
}
void push(const T& x)
{
m_c.push_back(x);
}
void pop()
{
m_c.pop_back();
}
T& front()
{
return m_c.front();
}
const T& front() const
{
return m_c.front();
}
T& back()
{
return m_c.back();
}
const T& back() const
{
return m_c.back();
}
size_t size()
{
return m_c.size();
}
bool empty()
{
return m_c.empty();
}
private:
Con m_c;
};
}
queue.cpp
#include <iostream>
#include "queue.h"
using namespace std;
int main()
{
gwp::queue<int> q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
q.push(5);
cout << q.size() << endl;
cout << q.empty() << endl;
cout << q.front() << endl;
cout << q.back() << endl;
q.pop();
cout << q.back() << endl;
system("pause");
return 0;
}