c++中STL库队列详细介绍

1.queue单向队列(先进先出,只能从尾端加元素,从头删元素)

        使用方式:在前面加上文件名‘#include<queue>',再进行声明'queue<int>m;''其中'<>‘里面是数组的类型,‘m'是数组的名字。

        操作:
1.q.push()//入队
2.q.pop()//让队首出队
3.q.front()//获得队首元素
4.q.back()//获得队尾元素

        5.q.empty() 队列是否为空
6.q.size() 返回队列内元素个数 

#include<iostream>
#include<queue>
using namespace std;
int main() {
	int i;
	queue<int>m;
	for ( i = 0;i < 5;i++) {
		m.push(i);//让元素入队
	}
	cout << m.size() << endl;//统计m中元素的个数
	for (i = 0;i < 5;i++) {
		cout<<m.front();//获得队首元素
		//m.pop();//弹出队首元素
	}
	return 0;
}

上面代码运行后由于没有讲队首元素给弹出,输出的都是是一样的,因此为了能让m中的每一个元素输出,我们应该及时的将队首元素给弹出,再每次输出第一个元素的时候及时的将它给弹出。

#include<iostream>
#include<queue>
using namespace std;
int main() {
	int i;
	queue<int>m;
	for ( i = 0;i < 5;i++) {
		m.push(i);//让元素入队
	}
	cout << m.size() << endl;//统计m中元素的个数
	for (i = 0;i < 5;i++) {
		cout<<m.front();//获得队首元素
		m.pop();//弹出队首元素
	}
	return 0;
}

这样我们就能将m中的所有元素给输出。

2.deque双向列队(即能从头部加入元素又能从尾部加入元素,元素进入按抽屉原理,最后进最先出)

         使用方式:在前面加上文件名‘#include<deque>',再进行声明‘deque<int>m;

        操作:
1.q.push_back()//尾部插入
2.q.push_front()//头部插入
3.q.pop_front()//头部删除
4.q.pop_back()//尾部删除
5.q.front()//返回第一个元素
6.q.back()//返回最后一个元素

#include<iostream>
#include<deque>
using namespace std;
int main() {
	int i;
	deque<int>m;
	for ( i = 0;i < 5;i++) {
		m.push_front(i);//让元素从头部入队
	}
	cout << m.size() << endl;//统计m中元素的个数
	for (i = 0;i < 5;i++) {
		cout<<m.front();//获得队首元素
		m.pop_front();//从头部弹出队首元素
	}
	return 0;
}

 3.vector(长度可变的数组)

        使用方法:在前面加上文件名‘#include<vector>',再进行声明‘vector<int>m;'。

        操作

        1.m.push_back()//输入元素
2.m.pop_back()//删除最后一个元素
3.m.size()//得到vector的大小
4.m.clear()//清空容器中所有数据
5.m.empty()//判断vector是否为空
6.m.front()//引用第一个元素
7.m.back()//引用最后一个元素

#include<iostream>
#include<vector>
using namespace std;
int main() {
	int i;
	vector<int>m;
	for ( i = 0;i < 5;i++) {
		m.push_back(i);//让元素入队
	}
	cout << m.size() << endl;//得到vector容器的大小
	for (i = 0;i < 5;i++) {
		cout << m.back();//获得尾部元素
		m.pop_back();//从尾部弹出元素
	}
	cout << endl;
	for (i = 0;i < 5;i++) {
		m.push_back(i);
	}
	cout << m.size() << endl;
	m.clear();//清除m中所有元素
	cout << m.size() << endl;
	return 0;
}

到此这篇关于c++中STL库队列详细介绍的文章就介绍到这了,更多相关c++ STL库队列内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅谈C++STL之双端队列容器

    概述 deque块在头部和尾部都可以插入和删除.而不需要移动任何元素,而不需要移动其他元素(使用push_back()方法在尾部插入元素,会扩张队列,而使用push_front()方法在首部插入元素和使用insert()方法在中间插入元素,只是将原位置上的元素进行覆盖,不会增加新元素)一般来说,当考虑到容器元素的内存分配策略和操作的性能时deque相当于vector更有优势. 创建deque对象与vector类似 插入元素 使用push_back()方法从尾部插入元素,会不断扩张队列. #inc

  • C++ STL 序列式容器与配接器的简单使用

    目录 容器概述 序列式容器 array vector list deque forward_list Adapter(配接器) stack queue priority_queue 容器概述 C++标准里提供了以下容器或容器配接器: 序列式容器 配接器 关联式容器 不定序关联容器 array stack set unordered_set vector queue map unordered_map list priority_queue multiset unordered_multiset

  • C++ STL中的容器适配器实现

    1 stack 1.1 stack 介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作.back:获取尾部元素操作.pus

  • c++中STL库队列详细介绍

    1.queue单向队列(先进先出,只能从尾端加元素,从头删元素)         使用方式:在前面加上文件名'#include<queue>',再进行声明'queue<int>m;''其中'<>'里面是数组的类型,'m'是数组的名字.         操作: 1.q.push()//入队 2.q.pop()//让队首出队 3.q.front()//获得队首元素 4.q.back()//获得队尾元素         5.q.empty() 队列是否为空 6.q.size(

  • Java中的阻塞队列详细介绍

    Java中的阻塞队列 1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列.这两个附加的操作是: 在队列为空时,获取元素的线程会等待队列变为非空. 当队列满时,存储元素的线程会等待队列可用. 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程.阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素. 2.Java里的阻塞队列 JDK中提供了七个阻塞队列: ArrayBlockingQueue :一个由数组结

  • Maven中pom.xml配置文件详细介绍

    setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件:而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件. 基础配置 一个典型的pom.xml文件配置如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org

  • python中dlib库的详细安装方法

    一.下载dlib 下载自己需要的. 二.安装需要的库 准备安装dlib前安装的库: 更新 pip.setuptools.wheel pip install --upgrade pip pip install --upgrade setuptools pip install --upgrade wheel 可以使用镜像:-i pip install cmake -i pip install boost i 三.安装dlib win + R => cmd # pip install (前面下载的dl

  • Vue状态管理库Pinia详细介绍

    目录 什么是 Pinia 如何使用 Pinia 认识 Store 定义一个store 使用 store 操作 State Getters 1. 认识和定义 Getters 2. 访问 Getters 认识和定义 Action 什么是 Pinia Pinia (西班牙语中的菠萝),本质上依然是一个状态管理的库,用于跨组件.页面进行状态共享. pinia 与 vuex 的区别: 更友好的TypeScript支持,Vuex之前对TS的支持很不友好 与 Vuex 相比,Pinia 提供了一个更简单的 A

  • vue中mint-ui环境搭建详细介绍

     vue中mint-ui环境搭建详细介绍 首先需要如下配置node (最好用淘宝源) $ npm install -g cnpm --registry=https://registry.npm.taobao.org 以及git 从官方github拉下来mint-ui git clone https://github.com/ElemeFE/mint-ui.git 进入mint-ui npm run dev 全程大概5-10分钟,出现 Build completed in 34.926s Chil

  • canvas 画布在主流浏览器中的尺寸限制详细介绍

    canvas 画布在主流浏览器中的尺寸限制详细介绍 通过测试发现,canvas在不同浏览器下面有不同的最大尺寸限制. 大家都知道,canvas有自身的width,height属性来控制尺寸,用css的width,height,控制显示的大小.可以理解为canvas就是一个img,属性的width,height就是这个img的原图像素大小.但在各浏览器下,设置canvas尺寸时发现有最大尺寸限制.测试一下与大家分享. 测试代码 <!DOCTYPE html> <html> <h

  • PHP中error_reporting函数用法详细介绍

    PHP中error_reporting函数用法详细介绍 PHP中对错误的处理会用到error_reporting函数,看到最多的是error_reporting(E_ALL ^ E_NOTICE),这个是什么意思呢?下面我们具体分析error_reporting函数. 定义用法 error_reporting() 设置 PHP 的报错级别并返回当前级别. 语法 error_reporting(report_level) 如果参数 report_level 未指定,当前报错级别将被返回.下面几项是

  • Android中View绘制流程详细介绍

    创建Window Window即窗口,这个概念在AndroidFramework中的实现为android.view.Window这个抽象类,这个抽象类是对Android系统中的窗口的抽象.在介绍这个类之前,我们先来看看究竟什么是窗口呢? 实际上,窗口是一个宏观的思想,它是屏幕上用于绘制各种UI元素及响应用户输入事件的一个矩形区域.通常具备以下两个特点: 独立绘制,不与其它界面相互影响: 不会触发其它界面的输入事件: 在Android系统中,窗口是独占一个Surface实例的显示区域,每个窗口的S

  • Numpy中的数组搜索中np.where方法详细介绍

    numpy.where (condition[, x, y]) numpy.where() 有两种用法: 1. np.where(condition, x, y) 满足条件(condition),输出x,不满足输出y. 如果是一维数组,相当于[xv if c else yv for (c,xv,yv) in zip(condition,x,y)] >>> aa = np.arange(10) >>> np.where(aa,1,-1) array([-1, 1, 1,

随机推荐