第 18.7 節
queue 容器
0瀏覽次數0訪問次數--跳出率--平均停留
queue 容器
queue 基本概念
概念:Queue是一種先進先出(First In First Out,FIFO)的數據結構,它有兩個出口

隊列容器允許從一端新增元素,從另一端移除元素
隊列中只有隊頭和隊尾纔可以被外界使用,因此隊列不允許有遍歷行爲
隊列中進數據稱爲 --- 入隊 push
隊列中出數據稱爲 --- 出隊 pop
生活中的隊列:

queue 常用接口
功能描述:棧容器常用的對外接口
構造函數:
queue<T> que;//queue採用模板類實現,queue對象的默認構造形式queue(const queue &que);//拷貝構造函數
賦值操作:
queue& operator=(const queue &que);//重載等號操作符
數據存取:
push(elem);//往隊尾添加元素pop();//從隊頭移除第一個元素back();//返回最後一個元素front();//返回第一個元素
大小操作:
empty();//判斷堆棧是否爲空size();//返回棧的大小
示例:
#include <iostream>
#include <queue>
#include <string>
using namespace std;
class Person
{
public:
Person(string name, int age)
{
this->m_Name = name;
this->m_Age = age;
}
string m_Name;
int m_Age;
};
void test01() {
//创建队列
queue<Person> q;
//准备数据
Person p1("唐僧", 30);
Person p2("孙悟空", 1000);
Person p3("猪八戒", 900);
Person p4("沙僧", 800);
//向队列中添加元素 入队操作
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
//队列不提供迭代器,更不支持随机访问
while (!q.empty()) {
//输出队头元素
cout << "队头元素-- 姓名: " << q.front().m_Name
<< " 年龄: "<< q.front().m_Age << endl;
cout << "队尾元素-- 姓名: " << q.back().m_Name
<< " 年龄: " << q.back().m_Age << endl;
cout << endl;
//弹出队头元素
q.pop();
}
cout << "队列大小为:" << q.size() << endl;
}
int main() {
test01();
return 0;
}
運行結果:
队头元素-- 姓名: 唐僧 年龄: 30
队尾元素-- 姓名: 沙僧 年龄: 800
队头元素-- 姓名: 孙悟空 年龄: 1000
队尾元素-- 姓名: 沙僧 年龄: 800
队头元素-- 姓名: 猪八戒 年龄: 900
队尾元素-- 姓名: 沙僧 年龄: 800
队头元素-- 姓名: 沙僧 年龄: 800
队尾元素-- 姓名: 沙僧 年龄: 800
队列大小为:0
總結:
- 入隊 --- push
- 出隊 --- pop
- 返回隊頭元素 --- front
- 返回隊尾元素 --- back
- 判斷隊是否爲空 --- empty
- 返回隊列大小 --- size