Queue简介

  • queue是队列容器,是一种“先进先出”的容器。
  • queue是简单地装饰deque容器而成为另外的一种容器。
  • #include <queue>

1.queue对象的默认构造

queue采用模板类实现,queue对象的默认构造形式:queue<T> queT;  如:
queue<int> queInt; //一个存放int的queue容器。
queue<float> queFloat; //一个存放float的queue容器。
...
//尖括号内还可以设置指针类型或自定义类型。

2.queue的push()与pop()方法

  • queue.push(elem);   //往队尾添加元素
  • queue.pop();   //从队头移除第一个元素
#include<iostream>
using namespace std;
#include <queue>
void objPlay2()
{
queue<int> queInt;
queInt.push();
queInt.push();
queInt.push();
queInt.push();
queInt.push();
queInt.pop();
queInt.pop();//此时queInt存放的元素是5, 7, 9 }
int main()
{
objPlay2();
return ;
}

3.queue对象的拷贝构造与赋值

  • queue(const queue &que);                    //拷贝构造函数
  • queue& operator=(const queue &que); //重载等号操作符
void objPlay3()
{
queue<int> queIntA;
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push(); queue<int> queIntB(queIntA); //拷贝构造
queue<int> queIntC;
queIntC = queIntA; //赋值 }

4.queue的数据存取

  • queue.back();   //返回最后一个元素
  • queue.front();   //返回第一个元素
void objPlay4()
{
queue<int> queIntA;
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push(); int iFront = queIntA.front(); //获取队列的头元素,1
int iBack = queIntA.back(); //获取队列的尾元素 ,9 queIntA.front() = ; //
queIntA.back() = ; // }

5.queue的大小

  • queue.empty();   //判断队列是否为空
  • queue.size();          //返回队列的大小
    void objPlay5()
    {
    queue<int> queIntA;
    queIntA.push();
    queIntA.push();
    queIntA.push();
    queIntA.push();
    queIntA.push(); if (!queIntA.empty())
    {
    int iSize = queIntA.size(); //队列中有五个元素
    } }

 以上所有代码整理:

#include<iostream>
using namespace std;
#include <queue>
void objPlay2()
{
queue<int> queInt;
queInt.push();
queInt.push();
queInt.push();
queInt.push();
queInt.push();
queInt.pop();
queInt.pop();//此时queInt存放的元素是5, 7, 9 }
void objPlay3()
{
queue<int> queIntA;
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push(); queue<int> queIntB(queIntA); //拷贝构造
queue<int> queIntC;
queIntC = queIntA; //赋值 }
void objPlay4()
{
queue<int> queIntA;
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push(); int iFront = queIntA.front(); //获取队列的头元素,1
int iBack = queIntA.back(); //获取队列的尾元素 ,9 queIntA.front() = ; //
queIntA.back() = ; // }
void objPlay5()
{
queue<int> queIntA;
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push();
queIntA.push(); if (!queIntA.empty())
{
int iSize = queIntA.size(); //队列中有五个元素
} } int main()
{
objPlay2();
objPlay3();
objPlay4();
objPlay5(); return ;
}

STL学习系列五:Queue容器的更多相关文章

  1. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  2. scrapy爬虫学习系列五:图片的抓取和下载

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  3. STL学习系列之一——标准模板库STL介绍

    库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...

  4. 侯捷STL学习(九)--关联式容器(Rb_tree,set,map)

    layout: post title: 侯捷STL学习(九) date: 2017-07-21 tag: 侯捷STL --- 第十九节 容器rb_tree Red-Black tree是自平衡二叉搜索 ...

  5. STL学习系列七:优先级队列priority_queue容器

    1.简介 最大值优先级队列.最小值优先级队列 优先级队列适配器 STL priority_queue 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习 这里给个例子: #include< ...

  6. STL学习系列三:Deque容器

    1.Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. deque在接口上和vector非常 ...

  7. STL学习系列二:Vector容器

    1.Vector容器简介 vector是将元素置于一个动态数组中加以管理的容器. vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). vector尾部添 ...

  8. STL学习系列四:Stack容器

    Stack简介 stack是堆栈容器,是一种“先进后出”的容器. stack是简单地装饰deque容器而成为另外的一种容器. #include <stack> 1.stack对象的默认构造 ...

  9. STL学习系列九:Map和multimap容器

    1.map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...

随机推荐

  1. mysql备份恢复数据库据/表

    备份单个数据库,只备份表,如要恢复,必须先创建一个数据库[root@s]# mysqldump -u root -p dbname1 > dbname1.sql[root@s]# mysql - ...

  2. Math.sqrt

    java.lang.Math.sqrt(double a) 返回正确舍入的一个double值的正平方根.特殊情况: 如果参数是NaN或小于为零,那么结果是NaN. 如果参数是正无穷大,那么结果为正无穷 ...

  3. JAVA将Excel中的报表导出为图片格式(三)换一种实现

    上一篇介绍了使用Java的Robot机器人实现截图,然后将剪贴板上的数据流生成PNG图片 但是经过博主的不断测试,在完全依赖远程桌面的没有终端显示器的服务器上 使用截图方式是不可行的,因为一旦使用了远 ...

  4. 4010: [HNOI2015]菜肴制作

    拓扑排序+堆. 转自popoqqq神犇. 反向建图跑拓扑排序然后逆序输出. 为什么不能正的来呢,因为不知道选当前菜要先制作哪种菜. 逆序过来跑拓扑的话,也能保证满足限制条件编号小的在前面. 题外话:我 ...

  5. Qt之自定义界面(添加自定义标题栏)

    简述 通过上节内容,我们实现了自定义窗体的移动,但是我们缺少一个标题栏来显示窗体的图标.标题,以及控制窗体最小化.最大化.关闭的按钮. 自定义标题栏后,所有的控件我们都可以定制,比如:在标题栏中添加换 ...

  6. Jqgrid入门-Jqgrid设置二级表头(六)

    上一章已经说明了Jqgrid结合Struts2+json展示数据,这一章主要探讨Jqgrid如何设置二级表头,类似这样的效果.如:           要实现这个功能,其实也不难.通过Jqgrid的s ...

  7. xcode6.3 编译ffmpeg 2.6.3(已验证编译成功)

    1.解压ffmpeg2.6.3源代码,在根目录下新建文件myconfig,内容如下,执行命令chmod 777 ./myconfig 2../myconfig 3.make 4.make instal ...

  8. LeetCode: Reverse Words in a String && Rotate Array

    Title: Given an input string, reverse the string word by word. For example,Given s = "the sky i ...

  9. 多线程程序设计学习(3)immutable pattern模式

    Immutable pattern[坚不可摧模式] 一:immutable pattern的参与者--->immutable(不变的)参与者        1.1:immutable参与者是一个 ...

  10. Java基础——异常处理

    异常的层次结构 所有的异常类都是 java.lang.Exception 类的子类型.异常类都是 Throwable 类的子类.除了异常类 Error 类也是由 Throwable 类产生的的子类1. ...