文章目录

  • 1. 基础
  • 2. 申明
  • 3. 添加元素 push()
  • 4. 获取第一个元素 front()
  • 5. 获取最后一个元素 back()
  • 6. 队列的大小 size()
  • 7. 删除第一个元素 pop()
  • 8. 返回是否为空 empty()
  • 9. 交换两个队列 swap()
  • 10. 遍历队列
  • 11. emplace() 与push()

1. 基础

队列遵循先进先出的原则

#include<queue>

2. 申明

#include <iostream>
#include <queue>
using namespace std;int main(){std::queue<int> numbers;
}

3. 添加元素 push()

在队列队尾添加一个元素

numbers.push(1);
numbers.push(2);
numbers.push(3);
numbers.push(4);

4. 获取第一个元素 front()

front():返回 queue 中第一个元素的引用

std::cout <<" queue number: " << numbers.front() << std::endl;

queue number: 1

5. 获取最后一个元素 back()

back():返回 queue 中最后一个元素的引用

std::cout <<" queue number back : " << numbers.back() << std::endl;

queue number back : 4

6. 队列的大小 size()

size():返回 queue 中元素的个数

std::cout << " queue size:  " << numbers.size() << std::endl;

queue number back : 4

7. 删除第一个元素 pop()

pop(): 删除 queue 中的第一个元素

//删除第一个元素
numbers.pop();
std::cout <<" queue size after erase : " << numbers.size() << std::endl;

queue size after erase : 3

8. 返回是否为空 empty()

empty():如果 queue 中没有元素的话,返回 true

//返回队列是否为空
std::cout << " numbers if empty :" << numbers.empty() << std::endl;
std::queue<int> nus;
std::cout << " nus if empty : " << nus.empty() << std::endl;

numbers if empty :0
nus if empty : 1

9. 交换两个队列 swap()

// 交换两个队列
// swap()函数用于交换两个队列的内容,但是队列的类型必须相同,尽管大小可能有所不同
std::cout << " numbers size: " << numbers.size() << " nus size: " << nus.size() << std::endl;
numbers.swap(nus);
std::cout << " after swap --> numbers size: " << numbers.size() << " nus size: " << nus.size() << std::endl;

numbers size: 3 nus size: 0
after swap --> numbers size: 0 nus size: 3

10. 遍历队列

queue 也没有迭代器。访问元素的唯一方式是遍历容器内容,并移除访问过的每一个元素。

// 遍历队列
// queue 也没有迭代器。访问元素的唯一方式是遍历容器内容,并移除访问过的每一个元素。
while (!nus.empty()){std::cout << nus.front() << std::endl;nus.pop();
}

2
3
4

11. emplace() 与push()

push() 在队尾添加一个元素

emplace() emplace 可以直接传入构造对象需要的元素, 然后自己调用其构造函数

typedef struct Node{int x;int y;Node(int _x, int _y) : x(_x), y(_y) {}
};int main(){//emplace 可以直接传入构造对象需要的元素, 然后自己调用其构造函数std::queue<Node> Nodes;Node this_node(1, 1);Node this_node2(2, 2);Nodes.push(this_node);Nodes.push(this_node2);Nodes.emplace(3, 3);std::cout <<"Nodes size: " << Nodes.size() << std::endl;
}

C++队列queue的用法相关推荐

  1. java队列课程_Java 实例 – 队列(Queue)用法

    Java 实例 - 队列(Queue)用法 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedL ...

  2. queue java 用法_Java队列(Queue)用法

    Java 实例 - 队列(Queue)用法 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedL ...

  3. java 队列实例_Java 实例 - 队列(Queue)用法

    全屏 Java 实例 - 队列(Queue)用法 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把Link ...

  4. oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例

    c++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. C++队列Queue是一种容 ...

  5. C++队列queue用法详解

    一.定义 queue是一种容器转换器模板,调用#include< queue>即可使用队列类. 二.queue初始化 queue<Type, Container> (<数 ...

  6. c语言中 队列用法,c中queue的用法

    下面小编就跟你们详细介绍下c中queue的用法的用法,希望对你们有用. c中queue的用法的用法如下: Model ----------------------------------------- ...

  7. C++ 中queue(队列)的用法

    #include <iostream> #include <queue> #include <assert.h> 调用的时候要有头文件: #include<s ...

  8. JAVA队列(Queue)用法附实例讲解

    一.功能 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. 二.声明 1.声明一个栈的写法,E表示数据类型,name是你给队列起的名字,LinkedList类实现了Q ...

  9. Python 队列(Queue)用法

    一.队列(Queue) Python的Queue模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQ ...

最新文章

  1. Windows IIS注册asp 此操作系统版本不支持此选项 错误解决方法
  2. Robust 源代码分析之gradle-plugin
  3. js控制每行输出2个LI隔行换色
  4. java 连接ldap_ldap java 连接demo
  5. python时间差怎么转换为数字_pandas进行时间数据的转换和计算时间差并提取年月日...
  6. centos7 开启防火墙端口 firewalld
  7. YbSoftwareFactory 代码生成插件【九】:基于JQuery、WebApi的ASP.NET MVC插件的代码生成项目主要技术解析...
  8. 小明利用计算机软件绘制函数,2019年人大附中初二下期末模拟数学试题
  9. 从零开始学 Web 之 JS 高级(二)原型链,原型的继承
  10. vue自学入门-2(vue创建项目)
  11. python自动化--接口请求及封装
  12. oracle异常:主动抛出自定义异常+捕获指定异常
  13. 学习yaf(二) 使用Bootstrap
  14. ubuntu和windows双系统启动顺序的修改
  15. matlab基础与实例教程,MATLAB R2018基础与实例教程
  16. 人物肖像速写_骄傲家庭:肖像项目
  17. 只有程序员才能读懂的三国演义(一)
  18. 200个句子搞定3500个高考词汇,究竟有多少词?
  19. dither(抖动)
  20. TSM是NFC应用发展的关键环节

热门文章

  1. 软考网络管理员教程精讲之ps命令
  2. php采集百度热搜,python 爬取百度热搜
  3. 面向计算机网络设备的运维服务应属于,管理信息系统模拟试题及答案
  4. vue 底部footer导航组件
  5. 打油诗二首+自制男士通用名片一张~
  6. Flask-Mail使用163邮箱异步发送邮件
  7. MRI图像预处理流程
  8. java 扫描仪打印机_java打印机
  9. linux磁盘满了以及负载过高解决办法
  10. 我的第一个爬虫:request+pyquery爬取B站热门视频标题与播放量