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

目录

一、成员函数 

一、构造函数

二、入栈 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.hqwc.cn/news/640787.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWD线下攻防万字最完整战术(记第一届“长城杯”半决赛战术)

目录 准备阶段 1.登录比赛平台&#xff08;获取资产&#xff09; 查看账号账号修改 服务器SSH口令mysqlWEB服务口令(后台密码)数据库后台管理员密码 账号用户检查 2.dump源码&#xff08;方便应急响应恢复靶机&#xff09; 网站源码备份 压缩文件解压文件备份到服务器本地上传…

Google Ads广告为Demand Gen推出生成式AI工具,可自动生成广告图片

谷歌今天宣布在Google Ads广告中为Demand Gen活动推出新的生成人工智能功能。 这些工具由谷歌人工智能提供支持&#xff0c;广告商只需几个步骤即可使用文本提示创建高质量的图片。 这些由人工智能驱动的创意功能旨在增强视觉叙事能力&#xff0c;帮助品牌在YouTube、YouTube…

Webpack-

定义 静态模块&#xff1a;指的是编写代码过程中的html&#xff0c;css&#xff0c;js&#xff0c;图片等固定内容的文件 打包&#xff1a;把静态模块内容压缩、整合、翻译等&#xff08;前端工程化&#xff09; 1&#xff09;把less/sass转成css代码 2&#xff09;把ES6降级…

1.基于Springboot对SpringEvent初步封装

一&#xff1a;前置知识 Spring Event是Spring框架提供的一种事件机制&#xff0c;用于处理组件之间的通信。在复杂的系统中&#xff0c;模块或组件之间的通信是必不可少的。Spring Event可以用于以下场景&#xff1a; 1.系统间解耦&#xff1a;模块或组件之间通过事件进行通…

.gitignore语法及配置问题

语法及配置 前言.gitignore语法Git 忽略规则优先级gitignore规则不生效Java项目中常用的.gitignore文件c项目中常用的.gitignore注意事项 前言 在工程中&#xff0c;并不是所有文件都需要保存到版本库中&#xff0c;例如“target”目录及目录下的文件就可以忽略。在Git工作区的…

NLP大模型的训练

NLP模型的训练主要分成两步&#xff1a; 1.先进行通用任务的训练&#xff1b;无监督的样本是无穷无尽的&#xff1b; 这里列举两种&#xff1a;MLM和NSP,NSP由于在某些论文中被证明是无效的&#xff0c;所以用的少&#xff1b; MLM: 接下来会在特定任务上进行finetune>su…

夜神、雷电、android studio手机模拟器资源占用情况

夜神、雷电、android studio手机模拟器内存资源占用情况 由于开发电脑只有16G内存&#xff0c;出于开发需要和本身硬件资源的限制&#xff0c;对多个手机模拟器进行了机器资源占用&#xff08;主要是内存&#xff09;的简单比较。 比较的模拟器包括&#xff1a; 1. Android S…

[Kotlin]引导页

使用Kotlin Jetpack Compose创建一个左右滑动的引导页, 效果如图. 1.添加依赖项 androidx.compose.ui最新版本查询:https://maven.google.com/web/index.html com.google.accompanist:accompanist-pager最新版本查询:https://central.sonatype.com/ 确保在 build.gradle (M…

C语言——内存函数的实现与模拟

1. memcpy 函数 与strcpy 函数类似 1.头文件 <string.h> 2.基本格式 • 函数memcpy从source的位置开始向后复制num个 字节 的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果source和destination有任何的重叠&#xff0…

数据分析_数据分析思维(1)

数据分析_数据分析思维(1) 这篇文章具体的给大家介绍数据分析中最为核心的技术之一: 数据分析思维的相关内容。 一、数据分析的三种核心思维 作为新手数据分析师或数据运营, 在面对数据异常的时候, 好多小伙伴都会出现: “好像是A引起的”, “好像也和B渠道有关”, “也可能…

3D MINS 多模态影像导航系统

3D MINS多模态影像导航系统&#xff08;Multimodal Image Navigation System&#xff09;是SunyaTech研发的建立在DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;图像基础之上的多模态影像导航系统&#xff0c;集二维影像PACS管理、三维影像层级…

李宏毅2022机器学习/深度学习 个人笔记(3)

本系列用于推导、记录该系列视频中本人不熟悉、或认为有价值的知识点 本篇记录代码效果不佳时应该怎么做 如下图所示&#xff1a; 接下来探讨&#xff0c;当optimization不佳的时候&#xff0c;如何判断是遇到了鞍点还是遇到了局部最小值点&#xff1f;可以通过多元函数的泰勒…