赞
踩
queue容器简介
queue是一种先进先出(FIFO)的数据结构,因此queue容器又称队列容器。
queue容器有 2 个开口,其中一个开口专门用来输入元素,另一个专门用来输出元素。
队列中只有队头和队尾才可以被外界使用,只能在队列容器的末尾添加新元素,只能从头部移除元素。
队列中进数据称为 — 入队 push。
队列中出数据称为 — 出队 pop。
queue容器特点
queue容器内的元素进出都必须符合 “先进先出” 的策略。
queue容器队列顶端(队头和队尾)的元素才会被取用,因此queue容器不提供遍历功能,也不提供迭代器。
最先进入 queue 的元素,也可以最先从 queue 中出来
创建一个空的 queue 容器
语法:queue<T> q
//创建一个int类型的queue 容器,底层采用 deque 容器的 queue 容器适配器
queue<int> q1;
创建指定的queue 容器
指定queue 容器适配器底层采用的基础容器类型,可以选择 deque 和 list
语法:queue<T, list<T>> values
//创建了一个使用 list 容器作为基础容器的空queue容器
queue<int, list<int>> q2;
注意:基础容器存储的数据类型必须和 queue 容器存储的数据类型保持一致
用基础容器deque来创建 queue 容器
语法:queue<T> q{}
deque<int> values{ 1,2,3 };
queue<int> q3(values);
注意:deque容器元素类型需要和 deque的容器类型相同
拷贝构造
语法:queue<int> q4(const queue &que)
deque<int> values{ 1,2,3 };
queue<int> q3(values);
queue<int> q4(q3);
queue容器常用的的成员函数如下:
成员函数 | 功能 |
---|---|
empty() | 判断队列是否为空 |
size() | 返回队列中的元素个数。 |
front() | 返回队列中第一个元素。如果队列是常量,就返回一个常引用;如果队列为空,返回值是未定义的。 |
back() | 返回队列中最后一个元素。如果队列是常量,就返回一个常引用;如果队列为空,返回值是未定义的。 |
push(const T& obj) | 在队列的尾部添加一个元素的副本。这是通过调用底层容器的成员函数 push_back() 来完成的。 |
push(T&& obj) | 以移动的方式在队列的尾部添加元素。这是通过调用底层容器的具有右值引用参数的成员函数 push_back() 来完成的。 |
pop() | 移除队列中的第一个元素。 |
代码实例:
#include<iostream> using namespace std; #include<queue> #include<list> void test1(){ //默认构造 queue<int> q1; //list容器构造 queue<int, list<int>> q2; //deque容器构造 deque<int> values{ 1,2,3 }; queue<int> q3(values); //拷贝构造 queue<int> q4(q3); for (int i = 0; i < 10; i++) { q2.push(i); } cout << "q1.size: " << q1.size() << endl; cout << "q1首个元素: "<< q2.front() << endl; cout << "q1末尾元素: "<< q2.back() << endl; //遍历容器访问队列元素 while (!q2.empty()) { cout << q2.front() << endl; //出队 q2.pop(); } } int main() { test1(); system("pause"); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。