首页 > 其他分享 >stack和queue的底层容器封装 以及提供随机存储的容器

stack和queue的底层容器封装 以及提供随机存储的容器

时间:2023-12-04 15:45:23浏览次数:39  
标签:std 容器 deque queue stack 底层

在 C++ 中,std::stackstd::queue 是容器适配器,它们提供了特定的接口,依赖于某个容器类(如 std::dequestd::list)来处理元素1

  • std::stackstd::stack 默认使用 std::deque 作为其底层容器2。但是,你也可以在创建 std::stack 对象时指定其他的底层容器,只要这个容器支持 backpush_backpop_back 操作。因此,除了 std::dequestd::vectorstd::list 也可以作为 std::stack 的底层容器1

  • std::queuestd::queue 默认使用 std::deque 作为其底层容器2。但是,你也可以在创建 std::queue 对象时指定其他的底层容器,只要这个容器支持 frontbackpush_backpop_front 操作。因此,除了 std::dequestd::list 也可以作为 std::queue 的底层容器1

   需要注意的是,std::vector 不能作为 std::queue 的底层容器,因为 std::vector 不支持 pop_front 操作1

在 C++ 的 STL(标准模板库)中,以下容器提供了随机存取:

  • std::vectorvector 是一个动态数组,能够根据需要增长以容纳其元素4。它允许通过 operator[] 进行随机访问1

  • std::arrayarray 是一个固定大小的数组,支持随机访问2

  • std::dequedeque(双端队列)是一个可以在两端进行插入和删除操作的序列容器,同时也支持随机访问2

这些容器都提供了 operator[]at() 成员函数

标签:std,容器,deque,queue,stack,底层
From: https://www.cnblogs.com/whcjob/p/17875023.html

相关文章

  • 阻塞队列之 LinkedBlockingQueue
    LinkedBlockingQueue:Java多线程编程中的阻塞队列在Java多线程编程中,LinkedBlockingQueue是一个非常重要的类,它提供了一种用于在生产者和消费者之间进行数据传递的机制。LinkedBlockingQueue广泛应用于各种场景,如线程池、任务队列等。本文将详细介绍LinkedBlockingQueue的原理......
  • java 捕获异常Exception 获取异常信息的方法 e.toString() e.getMessage() e.printSta
    Java异常中e.getMessage()和e.toString()e.printStackTrace()的区别e.getMessage():打印异常的原因e.toString():打印异常类型和异常的原因e.printStackTrace():打印完整的异常堆栈信息  总结e.getMessage()和e.toString()方法:打印的异常信息太少,没有具体......
  • 1.Java集合(List、Set、Queue)
    1.集合概述Java集合也被称为容器。主要由两个接口组成,一个是Collection接口,主要存放单一元素;一个是Map接口,主要存放键值对。Collection下面还有三个子接口,分别是List、Set、Queue。Java框架如下图所示:1.1List、Set、Queue、Map简介List(对付顺序的好帮手):存储的元素有序、......
  • Linux 上的容器技术
    容器实现封闭的环境主要要靠两种技术,一种是看起来是隔离的技术,称为namespace(命名空间)。在每个namespace中的应用看到的,都是不同的IP地址、用户空间、进程ID等。另一种是用起来是隔离的技术,称为cgroup(网络资源限制),即明明整台机器有很多的CPU、内存,但是一个应用只能用其中的......
  • yocto-queue 库如何实现替代数组【玩转源码】
    前言前面提到了可以使用yocto-queue库代替Array操作数组,本篇则深入源码了解一下yocto-queue是如何实现替代数组的。yocto-queue源码分析源码中的代码量相对较少,读起来会比较轻松,看似可以琢磨的点少,其实不然。代码中包含知识点主要包括类的属性、链表与数组的对比、队列、自定义迭代......
  • dump 日志收集与分析(jmap 和 jstack 工具)讲解与实战操作
    目录一、概述二、常见的dump工具三、dump可能会导致进程卡住风险(生产谨慎操作)四、安装JDK五、jmap介绍与示例讲解1)jmap介绍2)Kafka安装(单机)1、下载安装包2、配置环境变量3、配置kafka3、配置ZooKeeper4、启动kafka5、验证3)示例讲解【示例一】执行jmap命令查看内存使用情况【......
  • 四、Work Queues(工作队列)
    一、轮训分发消息1、抽取工具类2、启动两个工作线程2.1两个工作线程(消费者)2.2生产者3、启动一个发送线程4、结果展示二、消息应答1、概念2、自动应答3、消息应答的方法4、Multiple的解释5、消息自动重新入队6、消息手动应答代码......
  • [Docker]如何添加文件卷到已存在的docker容器
    情景描述在业务部署的前期,docker只映射了一部分文件卷,在业务运行一段时间后,发现还有新的文件卷需要被映射,那如何快速实现?对于一个已经存在的容器Container,添加文件卷不能像新建容器时那样直接使用-v参数操作。操作前提是:你至少需要关停容器一次,需要计划停机时间和日期(规划),通知受影......
  • 【Java】嵌入式版东方通Web容器中台后端项目静态资源访问
    嵌入式东方通Web版本:7.0.E.6_P3~ 7.0.E.6_P6首先直接说结论,内置化东方通Web容器的基准版本较低。对静态资源访问配置必须使用一下语法#静态资源访问配置spring:resources:static-locations:classpath:/resources/,classpath:/static/,file:/opt/app/FileRo......
  • 2023ISCTFpwn题目:stack题解
    这是我在这次比赛中遇到最有意思的一题,不仅让我看到了一种有意思的题型,而且让我开始看懂了pwndbg的调试界面。IDA里面是这样的,有直接可以提权的backdoor函数,有read函数,看似有点像ret2system。让我们分析一下这个函数的读入逻辑:首先让你输入一个size值,read会总共分size次读入一个字......