C++中的queue(容器适配器)

server/2024/9/24 6:30:16/

目录

一、成员函数 

一、构造函数

二、入栈 push

三、出栈 pop

四、判空 empty

五、队列大小 size

六、取队头元素 front

七、取队尾元素 back

八、入栈 emplace

九、交换函数 swap

二、非成员函数重载

一、关系运算符重载

二、交换函数 swap 


C++中的queue不再是容器,而是容器适配器

注意:queue不再支持迭代器,因为需要保证先进先出 

一、成员函数 

一、构造函数

1.默认构造 

explicit queue (const container_type& ctnr = container_type())

queue<int> q;

二、入栈 push

void push (const value_type& val)

queue<int> q;
q.push(1); q.push(2); q.push(3);

三、出栈 pop

void pop ()

四、判空 empty

bool empty () const

queue<int> q;
for (int i = 0; i < 10; ++i) q.push(i);
while (!q.empty()) q.pop();

五、队列大小 size

size_type size() const

queue<int> q;
for (int i = 0; i < 10; ++i) q.push(i);
cout << q.size() << endl;

六、取队头元素 front

value_type& front ()

const value_type& front () const

queue<int> q;
for (int i = 0; i < 10; ++i) q.push(i);
cout << q.front() << endl;//0

七、取队尾元素 back

value_type& back ()

const value_type& back () const

queue<int> q;
for (int i = 0; i < 10; ++i) q.push(i);
cout << q.back() << endl;//9

八、入栈 emplace

emplace和push功能一样,但是当栈的对象为自定义类型时,emplace可以直接传入对象构造参数,无需构造对象再传入。

queue<pair<int, char>> q;
pair<int, char> p(10, 'a');
q.push(p);
q.emplace(20, 'b');

九、交换函数 swap

template <class... Args> 

void emplace (Args&&... args)

queue<int> q1;
q1.push(1); q1.push(2); q1.push(3);
queue<int> q2;
q2.push(4); q2.push(5);
cout << "交换前:q1.size: " << q1.size() << " q1.size: " << q2.size() << endl;
q1.swap(q2);
cout << "交换后:q1.size: " << q1.size() << " q1.size: " << q2.size() << endl;
//交换前:q1.size: 3 q1.size : 2
//交换后:q1.size : 2 q1.size : 3

二、非成员函数重载

一、关系运算符重载

(1)
template <class T, class Container>bool operator== (const queue<T,Container>& lhs, const queue<T,Container>& rhs);
(2)
template <class T, class Container>bool operator!= (const queue<T,Container>& lhs, const queue<T,Container>& rhs);
(3)
template <class T, class Container>bool operator<  (const queue<T,Container>& lhs, const queue<T,Container>& rhs);
(4)
template <class T, class Container>bool operator<= (const queue<T,Container>& lhs, const queue<T,Container>& rhs);
(5)
template <class T, class Container>bool operator>  (const queue<T,Container>& lhs, const queue<T,Container>& rhs);
(6)
template <class T, class Container>bool operator>= (const queue<T,Container>& lhs, const queue<T,Container>& rhs);

二、交换函数 swap 

template <class T, class Container>

void swap (queue<T,Container>& x, queue<T,Container>& y) noexcept

queue<int> q1;
q1.push(1); q1.push(2); q1.push(3);
queue<int> q2;
q2.push(4); q2.push(5);
cout << "交换前:q1.size: " << q1.size() << " q1.size: " << q2.size() << endl;
swap(q1, q2);
cout << "交换后:q1.size: " << q1.size() << " q1.size: " << q2.size() << endl;
//交换前:q1.size: 3 q1.size : 2
//交换后:q1.size : 2 q1.size : 3

http://www.ppmy.cn/server/9806.html

相关文章

旅游陪同翻译难吗, 旅游翻译英译中哪家好?

近来&#xff0c;随着中国旅游业的蓬勃发展&#xff0c;旅游陪同翻译的需求也水涨船高&#xff0c;这些专业的翻译服务者为中外游客搭建起友谊的桥梁&#xff0c;引领他们共同探索中国这片古老而神秘的土地 。那么&#xff0c;旅游陪同翻译英译中难吗&#xff1f;我们如何在众多…

【Ansible】04

【Ansible】03 任务块 block任务块 使用 block 可以将多个任务合并为一个组可以将整个 block任务组 , 一起控制是否要执行 # 如果webservers组中的主机系统发行版是Rocky&#xff0c;则安装并启动nginx [rootpubserver ansible]# vim block1.yml --- - name: block tasksho…

Linux0.11 源码中的内存分页机制

学习Linux的源码&#xff0c;《深入linux 内核架构》这本书看起来就让人害怕&#xff0c;然后就想着看看早期的linux版本的源码&#xff0c;从网上查看资料发现linux0.11 这个版本有很多人拿来当成教学版本&#xff0c;而且也有很多的参考书以这个版本作为基础来讲解&#xff0…

docker-MySQL 8 主从搭建

一.目录结构&#xff1a; 我是在/home目录下&#xff0c;建立个sql文件夹&#xff1a; 二、配置文件 1.mysql配置 mysql-master下.conf文件配置 ###### [mysqld] server-id1 # 启用二进制日志 log-binmaster-bin # 指定需要复制的数据库 binlog-do-dbtest_db # 指定二进制日…

自然语言处理(NLP)技术

自然语言处理&#xff08;NLP&#xff09;技术是一种处理和分析人类语言的技术&#xff0c;它可以帮助计算机理解、解释和生成自然语言。 以下是一些常见的使用NLP技术的例子&#xff1a; 1. 机器翻译&#xff1a;NLP技术可以将一种语言翻译成另一种语言&#xff0c;比如将英…

小程序中Java后台调用接口(getAccessToken)获取调用凭据,调用接口(msgSecCheck)检测文本内容是否安全--最终版

序言:书接上一篇文章:小程序前端调用接口(getAccessToken)获取调用凭据,调用接口(msgSecCheck)检测文本内容是否安全–最终版 原因:在前端测试时,使用小程序工具的真机调试,是可以跑通的,但你用小程序工具的预览模式就会没有响应。原因就在于访问wx.request({}),中…

Java中的BIO、NIO与AIO

1.概述 I/O 模型简单的理解&#xff1a;就是用什么样的通道进行数据的发送和接收&#xff0c;很大程度上决定了程序通信的性能。Java 共支持 3 种网络编程模型 I/O 模式&#xff1a;BIO、NIO、AIO。 2.Java BIO Java BIO(Blocking I/O)&#xff1a;是传统的java io 编程&#…

算法项目(9)—— 大模型实现PDF检索加QA

本文包含什么&#xff1f; 使用大语言模型进行多个PDF问答检索加QA.gradio实现的网页界面操作,全套代码以及代码介绍运行有问题? csdn上后台随时售后. 项目说明 本项目实现使用大语言模型为核心,gradio框架,调用vicuna实现多个pdf QA 代码运行 python3 main.py注意事项:…