C++系列-STL容器之queue

STL容器之queue


渔父·一棹春风一叶舟 - 五代·李煜

一棹春风一叶舟,一纶茧缕一轻钩。花满渚,酒满瓯,万顷波中得自由。


queue容器的概念

  • queue容器是一种先进先出的数据结构FIFO(first in first out),它有两个出口。
  • queue一端允许一端进入元素,称为队尾,允许一端移除元素,称为队头,这特别像排队的情形。
  • queue中进数据称为入队,用push接口。
  • queue中出数据称为出队,用接口pop。

queue容器构造函数和常用接口

queue的构造函数

  • queue q1,默认构造
  • 使用已有的容器构造,这个容器必须支持front,back,push_back,pop_front,通常可以使用deque和list。
  • queue q2(q1)拷贝构造函数。

queue的常用接口

函数原型 用途
push() 往队尾添加元素
pop() 从队头移除第一个元素
front() 返回第一个元素
back() 返回最后一个元素
empty() 判断queue是否为空
size() 判断queue是否为空
swap() 两个queue交换
cpp 复制代码
code:
#include <iostream>
#include <queue>
#include <deque>
using namespace std;

template<typename T>
void print_pop_stack(queue<T>& que)		// 这里不能用const,因为内部pop改变了stack
{
	while (!que.empty())			// 判断queue是否为空
	{
		cout << que.front() << " ";	// 返回第一个元素
		que.pop();					// 从队头移除第一个元素
	}
	cout << endl;
}

void test01()
{
	deque<int> deq1{1, 2, 3};
	queue<int> q1(deq1);			// 使用已有容器构造
	q1.push(10);
	q1.push(20);
	q1.push(30);
	queue<int> q2(q1);				// 拷贝构造

	cout << "\n---------- q1 ----------" << endl;
	cout << "q1.size(): " << q1.size() << endl;
	print_pop_stack<int>(q1);
	cout << "print_pop_stack后的q1.size(): " << q1.size() << endl;

	cout << "q2.size(): " << q2.size() << endl;
	cout << "q2.back():" << q2.back() << endl;	

	q2.swap(q1);
	cout << "q2.size(): " << q2.size() << endl;
	cout << "\n----------q2.swap(q1)后的q1 ----------" << endl;
	print_pop_stack<int>(q1);

	queue<int> q3;
	q3 = q1;		// queue中的=并未进行重载,无法直接赋值
	cout << "\n---------- q3 = q1后的q1 ----------" << endl;
	print_pop_stack<int>(q1);
}
int main()
{
	test01();
	system("pause");
	return 0;
}

result:

---------- q1 ----------
q1.size(): 6
1 2 3 10 20 30
print_pop_stack后的q1.size(): 0
q2.size(): 6
q2.back():30
q2.size(): 0

----------q2.swap(q1)后的q1 ----------
1 2 3 10 20 30

---------- q3 = q1后的q1 ----------
相关推荐
沐知全栈开发1 小时前
C# 委托(Delegate)
开发语言
江公望1 小时前
Qt qmlRegisterSingletonType()函数浅谈
c++·qt
任子菲阳1 小时前
学Java第三十四天-----抽象类和抽象方法
java·开发语言
csbysj20202 小时前
如何使用 XML Schema
开发语言
R6bandito_2 小时前
STM32中printf的重定向详解
开发语言·经验分享·stm32·单片机·嵌入式硬件·mcu
逆小舟2 小时前
【C/C++】指针
c语言·c++·笔记·学习
earthzhang20212 小时前
【1007】计算(a+b)×c的值
c语言·开发语言·数据结构·算法·青少年编程
江公望2 小时前
Qt QtConcurrent使用入门浅解
c++·qt·qml
杨枝甘露小码2 小时前
Python学习之基础篇
开发语言·python
我是华为OD~HR~栗栗呀3 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试