C++ stack与queue使用方法详细讲解

目录
  • Stack的介绍和使用
    • stack的默认定义的模板
    • stack的使用
  • queue的介绍和使用
    • queue的默认定义的模板
    • queue的使用

Stack的介绍和使用

stack的文档介绍

stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。

stack的默认定义的模板

注意:

默认情况下stack是以deque作为底层容器。

(大多数情况下都是使用queue作为底层容器即可,我们需要变动的只是存储类型)

方式一:规定的存储类型

//int类型
stack<int> st1;
//double类型
stack<double> st2;

方式二:规定底层实现容器

//用list
stack<int, list<int>> st1;
//用vector
stack<int, vector<int>> st2;

stack的使用

函数说明 接口说明
empty() 检测stack是否为空
size() 返回stack中元素的个数
top() 返回栈顶元素的引用
push() 将元素val压入stack中
pop() 将stack中尾部的元素弹出
#include<iostream>
#include<stack>
using namespace std;
int main() {
	stack<int> st;
	for (int i = 0; i < 10; i++) {
		st.push(i);
	}
	//0 1 2 3 4 5 6 7 8 9
	cout << st.size() << endl;//输出:10
	while (!st.empty()) {
		cout << st.top() << " ";
		st.pop();
	}
	cout << endl; //输出:9 8 7 6 5 4 3 2 1 0
	return 0;
}

queue的介绍和使用

queue的文档介绍

队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。

queue的默认定义的模板

注意:

默认情况下queue是以deque作为底层容器。

(大多数情况下都是使用queue作为底层容器即可,我们需要变动的只是存储类型)

方式一:规定的存储类型

//int类型
queue<int> st1;
//double类型
queue<double> st2;

方式二:规定底层实现容器

//用list
stack<int, list<int>> st1;
//用vector
stack<int, vector<int>> st2;

queue的使用

函数声明 接口说明
empty() 检测队列是否为空,是返回true,否则返回false
size() 返回队列中有效元素的个数
front() 返回队头元素的引用
back() 返回队尾元素的引用
push() 在队尾将元素val入队列
pop() 将队头元素出队列
#include <iostream>
#include <queue>
using namespace std;
int main(){
	queue<int> q;
	for (int i = 0; i < 10; i++) {
		q.push(i);
	}
	//0 1 2 3 4 5 6 7 8 9
	cout << q.size() << endl; //输出:10
	while (!q.empty()){
		cout << q.front() << " ";
		q.pop();
	}
	cout << endl; //输出:0 1 2 3 4 5 6 7 8 9
	return 0;
}

到此这篇关于C++ stack与queue使用方法详细讲解的文章就介绍到这了,更多相关C++ stack与queue内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++Stack栈类模版实例详解

    目录 1.栈的介绍 2.栈实现 3.代码测试 总结 1.栈的介绍 栈的实现方式分为3种 基于静态数组实现,内部预设一个很大的数组对象, 实现简单,缺点是空间受限. 基于动态数组实现,内部预设一个容量值,然后分配一段内存空间数组,如果入栈大于默认容量值时,则再次扩大分配新的内存数组,并将旧数组拷贝至新数组及释放旧数组. 基于双向循环链表实现 栈的函数需要实现如下所示: T pop() : 出栈并返回栈顶元素 void  push(const T &t) : 入栈 const T & top(

  • C++ STL容器stack和queue详解

    stack是一个比较简单的容器,它的使用也很简单,stack是LIFO容器,就是后进先出,最后添加进去的元素,第一个取出来 stack初始化 std::stack<int> first; std::stack<int> second(first); std::stack<int, std;:vector<int>> third; //使用vector初始化stack ### stack常用方法### empty();//判断是否为空 push(Elem e)

  • C++中stack容器的使用

    目录 一.stack容器 1.1 简介 1.2 常用接口 一.stack容器 1.1 简介 ① stack是一种先进后出的容器,它只有一个出口. ② 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为. ③ 栈中进入数据称为:入栈 push ④ 栈中弹出数据称为:出栈 pop 1.2 常用接口 ① 功能描述:栈容器常用的对外接口. ② 构造函数: stack stk; //stack采用模板类实现,stack对象的默认构造形式 stack(const stack &stk); //拷贝构

  • C++栈(stack)的模板类实现代码

    本文实例为大家分享了C++栈(stack)的模板类实现代码,供大家参考,具体内容如下 1.基本概念 栈中的元素遵守"先进后出"的原则(LIFO,Last In First Out) 只能在栈顶进行插入和删除操作 压栈(或推入.进栈)即push,将数据放入栈顶并将栈顶指针加一 出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一 栈的基本操作有:pop,push,判断空,获取栈顶元素,求栈大小 2.构造栈 可以使用数组构造栈,也可以使用单向链表构造,我觉得使用单向链表更加灵活方便,下

  • C++ 详细讲解stack与queue的模拟实现

    目录 容器适配器 双端队列 概念 结构 deque迭代器 优缺点 stack模拟 queue模拟实现 容器适配器 适配器是一种设计模式(设计模式是一套反复使用的.大部分人知道的代码设计经验的总结),该模式试讲一个类的接口转化为用户希望的另一个接口,虽然stack与queue中也可以存放元素,但在STL中并没有将其划分为容器,而是成为容器适配器,这是因为stack与队列只是堆其他容器进行了包装,STL中的stack和queue是使用双端队列进行封装的. 双端队列 概念 它是一种双开口的连续空间数据

  • C++详解实现Stack方法

    目录 栈简介 stack模拟 示例代码 开发环境 运行结果 栈简介 栈本着先进后出的原则,来存取数据.作为数据结构中的一种,这里不多介绍相关栈.仅以此文记录C++中栈的实现,可帮助提升编程能力与对栈的理解. stack模拟 stack是一种容器适配器,专门在具有后进先出的上下文环境中,其删除只能是在一端进行操作. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出 .

  • C++stack与queue模拟实现详解

    目录 stack与queue模拟实现 stack queue 为什么选择deque作为stack和queue的底层默认容器 总结 stack与queue模拟实现 在stl中,stack(栈)与queue(队列)都是容器适配器. 什么是容器适配器呢? 适配器(adaptor)是标准库中通用的概念,包括容器适配器.迭代器适配器和函数适配器.本质上,适配器是使一事物的行为类似于另一事物的行为的一种机制.容器适配器让一种已存在的容器类型采用另一种不同的抽象类型的工作方式实现.简单来说其实就是利用现有的容

  • C++中用两个标准容器stack,实现一个队列的方法详解

    代码如下所示: 复制代码 代码如下: // StackToQueue.cpp : 定义控制台应用程序的入口点.//用两个标准容器stack,实现一个队列#include "stdafx.h"#include <iostream>#include <stack>using namespace std;template <class T>class StackToQueue{public: StackToQueue() {  stack1;  stack

  • C++ stack与queue使用方法详细讲解

    目录 Stack的介绍和使用 stack的默认定义的模板 stack的使用 queue的介绍和使用 queue的默认定义的模板 queue的使用 Stack的介绍和使用 stack的文档介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出. sta

  • C++线程安全容器stack和queue的使用详细介绍

    目录 线程安全的容器栈threadsafe_stack 线程安全的容器队列threadsafe_queue 要构建线程安全的数据结构, 关注几点: 若某线程破坏了数据结构的不变量, 保证其他线程不能看到 提供的操作应该完整,独立, 而非零散的分解步骤避免函数接口固有的条件竞争(比如之前提到的empty和top和pop) 线程安全的容器栈threadsafe_stack 入门(3)里曾介绍过线程安全的stack容器, 这里把代码搬过来再分析 逐项分析, 该代码如何实现线程安全的 template<

  • C++二叉树的前序中序后序非递归实现方法详细讲解

    目录 二叉树的前序遍历 二叉树的中序遍历 二叉树的后序遍历 总结 二叉树的前序遍历 前序遍历的顺序是根.左.右.任何一颗树都可以认为分为左路节点,左路节点的右子树.先访问左路节点,再来访问左路节点的右子树.把访问左路节点的右子树看成一个子问题,就可以完整递归访问了. 先定义栈st存放节点.v存放值,TreeNode* cur,cur初始化为root. 当cur不为空或者栈不为空的时候(一开始栈是空的,cur不为空),循环继续:先把左路节点存放进栈中,同时把值存入v中,一直循环,直到此时的左路节点

  • ThreadPoolExecutor中的submit()方法详细讲解

    目录 submmit()参数解析 submit()的返回值Future FutureTask的get()的实现 submit()使用案例 在使用线程池的时候,发现除了execute()方法可以执行任务外,还发现有一个方法submit()可以执行任务. submit()有3个参数不一的方法,这些方法都是在ExecutorService接口中声明的,在AbstractExecutorService中实现,而ThreadPoolExecutor继承AbstractExecutorService. <T

  • C++双线程调用网络摄像头与多线程调用多摄像头同步执行方法详细讲解

    目录 一.使用双线程调用网络摄像头并执行算法 方法一 方法二 二.使用多线程调用多路摄像头并同步执行多个算法 在调用网络摄像头处理自己的算法时,当解码的速度与算法运行的速度差太多时,会出现类似下面的错误 error while decoding MB 148 4, bytestream 所以需要使用两个线程,一个线程调用摄像头,一个线程用来处理图像. 一.使用双线程调用网络摄像头并执行算法 方法一 #include <iostream> #include <thread> #inc

  • SpringBoot配置文件加载方法详细讲解

    目录 配置文件的读取顺序 多坏境的配置文件 个性化配置 自定义配置文件名称和路径 加载yml文件 配置文件的读取顺序 根目录/config/application.properties 根目录/config/application.yml 根目录/application.properties 根目录/application.yml classpath目录/config/application.properties classpath目录/config/application.yml classp

  • Android获取RecyclerView滑动距离方法详细讲解

    先说能用的究极解决方案,大家着急的直接复制走,以后想了解再过来看 没有header,且所有Item的高度一致 private fun getScrollYDistance(recyclerView: RecyclerView): Int? { kotlin.runCatching { val layoutManager = recyclerView.layoutManager as LinearLayoutManager val position = layoutManager.findFirs

  • SpringBoot整合Mybatis与MybatisPlus方法详细讲解

    目录 一.整合MyBatis操作 1.配置模式 2.注解模式 3.混合模式 二.整合 MyBatis-Plus 完成CRUD 1.什么是MyBatis-Plus 2.整合MyBatis-Plus 3.CRUD功能 一.整合MyBatis操作 官网:MyBatis · GitHub SpringBoot官方的Starter:spring-boot-starter-* 第三方的starter的格式: *-spring-boot-starter <dependency> <groupId>

  • Java Feign微服务接口调用方法详细讲解

    目录 Feign说明 引入依赖启动类开启客户端 Feign接口开发 编写容错类 在业务层调用Feign客户端接口 Feign的常用属性如下 Feign说明 Feign是一种声明式.模板化的HTTP客户端.在spring cloud中使用Feign,可以做到类似于普通的接口的请求调用,可以发现对应的服务的接口,进而直接调用对应服务中的接口. 引入依赖启动类开启客户端 首先需要引入依赖 <dependency> <groupId>org.springframework.cloud<

  • RUST异步流处理方法详细讲解

    目录 Stream 特质 yield 匿名流 try_join select SELECT宏几个条件 async 问号使用 Send trait Stream 特质 在同步Rust 中流的核心是Iterator 提供了一种在序列中产生项的方法,并在它们之间进行阻塞,通过迭代器传递给其他迭代器 在异步Rust中流的核心Stream, 允许其他任务在当前阻塞等待时允许 Read/Write, AsyncRead/AsyncWrite fn main() { let f = file::create(

随机推荐