STL—queue容器
阿新 • • 發佈:2020-11-12
queue 容器
1 queue 基本概念
概念:Queue是一種先進先出(First In First Out,FIFO)的資料結構,它有兩個出口
佇列容器允許從一端新增元素,從另一端移除元素
佇列中只有隊頭和隊尾才可以被外界使用,因此佇列不允許有遍歷行為
佇列中進資料稱為 --- 入隊 push
佇列中出資料稱為 --- 出隊 pop
生活中的佇列:
2 queue 常用介面
功能描述:棧容器常用的對外介面
建構函式:
queue<T> que;
//queue採用模板類實現,queue物件的預設構造形式queue(const queue &que);
//拷貝建構函式
賦值操作:
queue& operator=(const queue &que);
//過載等號操作符
資料存取:
push(elem);
//往隊尾新增元素pop();
//從隊頭移除第一個元素back();
//返回最後一個元素front();
//返回第一個元素
大小操作:
empty();
//判斷堆疊是否為空size();
//返回棧的大小
示例:
#include <queue> #include <string> 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(); system("pause"); return 0; }
總結:
- 入隊 --- push
- 出隊 --- pop
- 返回隊頭元素 --- front
- 返回隊尾元素 --- back
- 判斷隊是否為空 --- empty
- 返回佇列大小 --- size