【C++STL标准库】容器适配器

功能:将功能类似,但是接口不符合的接口转换成另一个接口

stack 栈stack(栈)

  • 特点:先入后出,只能从栈顶弹出值,只能从栈顶压入值

也就是说栈需要的功能:push_back、pop_back
所以可以与栈适配的容器:vector,list,deque(双向迭代器)
适配器不仅仅是兼容,还是一种限制:
push();push_back();
pop();pop_back;
top();back();

这里给出stack的基本使用方法:

#include <iostream>
#include <stack>int main() {std::stack<int> arr;//也可以显示指定队列使用的容器:std::stack<std::deque<int>> arr1;std::stack<std::initializer_list<int>> arr2;std::stack<std::deque<int>> arr3;//如果使用了不适配的容器,就会报错://std::stack<std::array<int>> arr4;//psuh方法,向栈顶压入值,返回值类型:voidstd::cout << typeid(arr.push(2)).name() << std::endl;for (int i = 0; i < 5; i++) {arr.push(i);}//pop方法,从栈顶弹出值,返回值:voidstd::cout << typeid(arr.pop()).name() << std::endl;arr.pop();//top方法,取出栈顶的值,返回值类型:Tint a = arr.top();std::cout << a << std::endl;//size方法:计算栈的大小,返回值类型:unsigned intint b = arr.size();std::cout << typeid(arr.size()).name() << std::endl;std::cout << b << std::endl;return 0;
}

queue 队列

  • 队列的特性:头部出,尾部进

适配的容器:deque,list
push()、push_back()
pop()、pop_front()
front()
back()

这里给出queue的基本使用介绍:

#include <iostream>
#include <queue>template <typename T>
void print(T Begin, T End);int main() {std::queue<int> obj;//可以显示指定适配的容器std::queue<std::deque<int>> obj1;std::queue<std::initializer_list<int>> obj2;//push方法:向队列中压入元素,返回值:voidfor (int i = 0; i < 5; i++) {obj.push(i);}std::cout << typeid(obj.push(1)).name() << std::endl;//size方法,返回队列的实际大小,返回值类型:unsigned intint a = obj.size();std::cout << a << std::endl;std::cout << typeid(obj.size()).name() << std::endl;//pop方法:从队列中弹出元素(头部),返回值:void,需要注意的是,pop方法不改变队列的实际大小std::cout << typeid(obj.pop()).name() << std::endl;int b = obj.size();std::cout << b << std::endl;//front,back方法,返回队列首的元素,返回值类型:Tint c = obj.front();int d = obj.back();std::cout << c << std::endl;std::cout << d << std::endl;std::cout << typeid(obj.front()).name() << std::endl;std::cout << typeid(obj.back()).name() << std::endl;return 0;
}

priority_queue 有限队列

适配容器:默认是vector,内部使用堆排序
greater指定大的在上面,优先级低的先出队
less指定小的在上面,优先级高的先出队

这里给出priority_queue的基本使用介绍:

  ```c_cpp#include <iostream>#include <deque>#include <queue>#include <vector>#include <list>template <typename T>void print(T Begin, T End);int main() {std::priority_queue<int, std::vector<int>, std::less<int>> obj;//可以显示指定适配的容器(第二个参数),可以指定排序规则(第三个参数),内部会默认使用堆排序obj.push(100);obj.push(200);obj.push(500);obj.push(120);obj.push(150);while (!obj.empty()) {std::cout << obj.top() << std::endl;obj.pop();}return 0;}

如果发现文章中有错误,还请大家指出来,我会非常虚心地学习,我们一起进步!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP(六十二)HuggingFace中的Datasets使用

Datasets库是HuggingFace生态系统中一个重要的数据集库&#xff0c;可用于轻松地访问和共享数据集&#xff0c;这些数据集是关于音频、计算机视觉、以及自然语言处理等领域。Datasets 库可以通过一行来加载一个数据集&#xff0c;并且可以使用 Hugging Face 强大的数据处理方法…

[Tools: tiny-cuda-nn] Linux安装

official repo: https://github.com/NVlabs/tiny-cuda-nn 该包可以显著提高NeRF训练速度&#xff0c;是Instant-NGP、Threestudio和NeRFstudio等框架中&#xff0c;必须使用的。 1. 命令行安装 最便捷的安装方式&#xff0c;如果安装失败考虑本地编译。 pip install ninja g…

使用机器学习实现自动化测试:提高效率和准确性

自动化测试&#xff1a;使用机器学习提高效率和准确性 在软件开发的过程中&#xff0c;测试是一个至关重要的环节。传统的手动测试往往耗时耗力&#xff0c;而且存在人为疏漏的可能。为了解决这些问题&#xff0c;许多团队开始将机器学习应用于自动化测试&#xff0c;以提高测试…

实现任意进制(2—32)转换

2020/01/01 实现原理参考代码测试样例其他补充后记交流 实现原理 本程序借助10进制数为中介数据&#xff0c;实现任意进制数之间的相互转换&#xff08;2-36进制范围&#xff09; 需要注意的是&#xff0c;数值范围不可超出 long long int 所表示的范围&#xff0c;即所输入需…

区块链与加密货币在Web3中的融入及意义

Web3是指下一代互联网&#xff0c;也被称为去中心化互联网。它的核心理念是建立一个去中心化的经济和社会系统&#xff0c;使得个人和社区能够更加自治和自主&#xff0c;而不依赖于中心化的机构和权力。 在Web3中&#xff0c;区块链和加密货币是非常重要的技术和概念。区块链是…

1.前端入门

文章目录 一、基础认知1.1 认识网页&#xff1a;1.2 五大浏览器1.3 Web标准 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、基础认知 1.1 认识网页&#xff1a; 1.网页由哪些部分组成&#xff1f; 文字、图片、音频、视频、超链接。 2.我们…

Hadoop基本信息

概念 Hadoop是Apache旗下的一个用Java语言实现开源软件框架&#xff0c;是一个存储和计算大规模数据的软件平台。 框架内容 狭义解释 核心组件 HDFS 分布式文件系统 - 解决海量数据存储MAPREDUCE 分布式运算编程框架 - 解决海量数据计算YARN 作业调度和集群资源管理的框架…

【机器学习】异常检测

异常检测 假设你是一名飞机涡扇引擎工程师&#xff0c;你在每个引擎出厂之前都需要检测两个指标——启动震动幅度和温度&#xff0c;查看其是否正常。在此之前你已经积累了相当多合格的发动机的出厂检测数据&#xff0c;如下图所示 我们把上述的正常启动的数据集总结为 D a t…

Jmeter常见问题之URI异常

这篇文章介绍一下"http://"重复导致的URI异常问题&#xff0c;通常从浏览器地址栏复制url&#xff0c;直接粘贴到Jmeter的http请求的服务器地址中会默认带上“http://”&#xff0c;要将http://删除&#xff0c;只写IP地址&#xff0c;如下图&#xff1a; 否则&…

项目开启启动命令整合

启动RabbitMQ管理插件 1.启动 RabbitMQ 管理插件。 rabbitmq-plugins enable rabbitmq_management rabbitmq-server # 直接启动&#xff0c;如果关闭窗⼝或需要在该窗⼝使⽤其他命令时应⽤就会停⽌ rabbitmq-server -detached # 后台启动 rabbitmq-server start # 启⽤服务 rab…

shell——正则表达式

1、正则表达式 . ls .txt 匹配当前目录下以.txt结尾的文件 * grep a* file.txt 匹配文件中所有连续出现的字母a grep ba file.txt 配文件中所有包含b后跟着一个或多个a的字符串。 ? grep colou?r file.txt 匹配文件中包含color或colour的字符串。 [ ] grep [ae…

16.喝水

喝水 html部分 <h1>Goal: 2 Liters</h1> <div class"cup cupbig"><div class"remained"><span id"liters">2L</span><small>Remained</small></div><div class"percentage&quo…

PHY芯片的使用(三)在linux下网络PHY的移植

1 前言 配置设备树请参考上一章。此次说明还是以裕太的YT8511芯片为例。 2 需要配置的文件及路径 a. 在 .. /drivers/net/phy 目录下添加 yt_phy.c 文件&#xff08;一般来说该驱动文件由厂家提供&#xff09;&#xff1b; b. 修改.. /drivers/net/phy 目录下的 Kconfig 文…

win10电脑便签常驻桌面怎么设置?

你是否曾经因为繁忙的工作而忘记了一些重要的事项&#xff1f;相信很多人都会回答&#xff1a;忘记过&#xff01;其实在快节奏的职场中&#xff0c;我们经常需要记录一些重要的信息&#xff0c;例如会议时间、约见客户时间、今天需要完成的工作任务等。而为了能够方便地记录和…

nodejs+vue+elementui学习交流和学习笔记分享系统

Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 前端技术&#xff1a;nodejsvueelementui,视图层其实质就是vue页面&#xff0c;通过编写vue页面从而展示在浏览器中&#xff0c;编写完成的vue页面要能够和控制器类进行交互&#xff0c;从而使得用户在点击网页进…

Spring Cloud Alibaba 集成 Skywalking 链路追踪

Spring Cloud Alibaba 集成 Skywalking 链路追踪 简介 skywalking 是一个国产开源框架&#xff0c;2015 年由吴晟开源 &#xff0c; 2017 年加入 Apache 孵化器。skywalking 是分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Doc…

redis中使用bloomfilter的白名单功能解决缓存预热问题

一 缓存预热 1.1 缓存预热 将需要的数据提前缓存到缓存redis中&#xff0c;可以在服务启动时候&#xff0c;或者在使用前一天完成数据的同步等操作。保证后续能够正常使用。 1.2 解决办法PostConstruct注解初始化

logback 自定义log字段(MDC)推送到logstash(spring boot + logback+ logstash)

直接上代码&#xff1a; 1.创建FIlter&#xff0c;往 MDC 里面追加内容 WebFilter Component public class LogBackFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepublic void doFilter(ServletRequest…

【复习16-18天】【我们一起60天准备考研算法面试(大全)-第二十四天 24/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

vue 全屏设置

全屏按钮调用&#xff08;全屏和退出全屏一个方法&#xff09; tofullscreenToggel(){this.isFullScreen!this.isFullScreenfullscreenToggel() } util方法定义 /*** 浏览器判断是否全屏*/ export const fullscreenToggel () > {if (fullscreenEnable()) {exitFullScree…