当前位置: 首页 > news >正文

【C++STL标准库】序列容器之deuqe与、orwa_list与list

基本概念这里就不再浪费时间去解释,这里给出deuqe与、orwa_list、list的基本使用方法:

  • deque队列:
#include <iostream>
#include <deque>template <typename T>
void print(T Begin, T End);int main() {std::deque<int> Obj1(6);//迭代器的类型:随机访问迭代器std::cout << typeid(std::deque<int>::iterator::iterator_category).name() << std::endl;//deque(队列)的赋值操作,可以使用[]的方式来进行赋值for (int i = 0; i < Obj1.size(); i++) {Obj1[i] = i+1;}print(Obj1.begin(), Obj1.end());std::cout << "----------------------------------------------------" << std::endl;//at方法,找到队列中,该下标的值并返回,可以用于修改值,返回值类型:TObj1.at(0) = 666;std::cout << typeid(Obj1.at(7)).name() << std::endl;print(Obj1.begin(), Obj1.end());std::cout << "----------------------------------------------------" << std::endl;//size方法,返回当前队列的实际大小int a = Obj1.size();std::cout << a << std::endl;std::cout << std::endl;std::cout << "----------------------------------------------------" << std::endl;//max_size方法,返回队列的最大尺寸int b = Obj1.max_size();std::cout << b << std::endl;std::cout << std::endl;std::cout << "----------------------------------------------------" << std::endl;//front方法和back方法:分别返回队列中,第一个元素和最后一个元素,返回值类型:Tint c = Obj1.front();int d = Obj1.back();std::cout << typeid(Obj1.front()).name() << std::endl;std::cout << typeid(Obj1.back()).name() << std::endl;std::cout << c << "\t" << d << std::endl;std::cout << "----------------------------------------------------" << std::endl;//push_front方法,向队列首添加元素,返回值类型:voidObj1.push_front(111);std::cout << typeid(Obj1.push_front(111)).name() << std::endl;print(Obj1.begin(), Obj1.end());std::cout << "----------------------------------------------------" << std::endl;//push_back方法,向队列尾部添加元素,返回值类型:voidObj1.push_back(12345679);std::cout << typeid(Obj1.push_back(12345679)).name() << std::endl;print(Obj1.begin(), Obj1.end());std::cout << "----------------------------------------------------" << std::endl;//pop_front方法,弹出队列首部的元素,返回值类型:voidObj1.pop_front();std::cout << typeid(Obj1.pop_front).name() << std::endl;print(Obj1.begin(), Obj1.end());std::cout << "----------------------------------------------------" << std::endl;//pop_back方法,弹出队列尾部的元素,返回值类型:voidObj1.pop_back();std::cout << typeid(Obj1.pop_back).name() << std::endl;print(Obj1.begin(), Obj1.end());std::cout << "----------------------------------------------------" << std::endl;//rbegin方法:反向迭代器print(Obj1.rbegin(), Obj1.rend());std::cout << "----------------------------------------------------" << std::endl;//insert方法,向列表的指定位置插入元素,第一个参数:迭代器,第二个参数:想要插入的值 //第二个参数也可以是个数,代表想要插入几个,第三个参数就是想要插入的值Obj1.insert(Obj1.begin()+4,3, 666666666);std::cout << typeid(Obj1.insert(Obj1.begin() + 4, 666)).name() << std::endl;print(Obj1.begin(), Obj1.end());std::cout << "----------------------------------------------------" << std::endl;//erase方法,删除指定位置的元素,参数是迭代器,也可以范围删除元素,第一个参数是起始位置迭代器,第二个参数是结束位置迭代器Obj1.erase(Obj1.begin(),Obj1.end());std::cout << typeid(Obj1.erase(Obj1.begin())).name() << std::endl;print(Obj1.begin(), Obj1.end());std::cout << "----------------------------------------------------" << std::endl;return 0;
}template<typename T>
void print(T Begin, T End)
{T i = Begin;for (; i != End; i++) {std::cout << *i << "\t";}std::cout << std::endl;
}

forward_list单向列表:

#include <iostream>
#include <forward_list>template <typename T>
void print(T Begin, T End);int main() {std::forward_list<int> arr(5, 000);//迭代器类型:前向迭代器,可读可写=, == ,!= ,++i ,i++std::cout << typeid(std::forward_list<int>::iterator::iterator_category).name() << std::endl;print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;//psuh_frint方法,前插法,向单向列表前插入元素,返回值类型:voidfor (int i = 0; i < 4; i++) {arr.push_front(i);}std::cout << typeid(arr.push_front(1)).name() << std::endl;print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;//pop_front方法,弹出列表第一个元素,返回值类型:voidarr.pop_front();std::cout << typeid(arr.pop_front()).name() << std::endl;print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;return 0;
}template<typename T>
void print(T Begin, T End)
{T i;for (i = Begin; i != End; i++) {std::cout << *i << "\t";}std::cout << std::endl;
}

list双向链表:

#include <iostream>
#include <list>template <typename T>
void print(T Begin, T End);int main() {std::list<int> arr(5, 666);//迭代器类型:struct std::bidirectional_iterator_tag(双向迭代器),可读可写=, == ,!= ,++i ,i++。--i,i--std::cout << typeid(std::list<int>::iterator::iterator_category).name() << std::endl;print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;//push_front,push_back方法:向列表同步和尾部插入元素,返回值类型:voidarr.push_front(1);arr.push_back(5);std::cout << typeid(arr.push_front(1)).name() << "\t" << typeid(arr.push_back(5)).name() << std::endl;print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;//insert方法,向列表指定位置插入元素,第一个参数为迭代器,指向要插入的位置,第二个参数为想要插入的值/第二个参数也可以为要插入元素的个数,第三个参数为要想插入的值arr.insert(arr.begin(), 2);arr.insert(arr.begin(), 3, 666);std::cout << typeid(arr.insert(arr.begin(), 2)).name() << std::endl;print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;//pop_front,pop_back方法,弹出列表首部和尾部的值,返回值类型:voidarr.pop_front();arr.pop_back();std::cout << typeid(arr.pop_front).name() << "\t" << typeid(arr.pop_back).name() << std::endl;print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;//erese方法:删除指定位置的值,参数为指定位置迭代器,也可以删除范围,第一个参数为其实迭代器,第二个参数为结束迭代器arr.erase(arr.begin());arr.erase(arr.begin(), arr.end());print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;//reverse方法:将列表中的元素倒置arr.reverse();print(arr.begin(), arr.end());std::cout << "----------------------------------------------------" << std::endl;return 0;
}template<typename T>
void print(T Begin, T End)
{T i;for (i = Begin; i != End; i++) {std::cout << *i << "\t";}std::cout << std::endl;
}

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

相关文章:

【C++STL标准库】序列容器之deuqe与、orwa_list与list

基本概念这里就不再浪费时间去解释&#xff0c;这里给出deuqe与、orwa_list、list的基本使用方法&#xff1a; deque队列&#xff1a; #include <iostream> #include <deque>template <typename T> void print(T Begin, T End);int main() {std::deque<…...

RocketMQ教程-(5)-功能特性-消息发送重试和流控机制

本文为您介绍 Apache RocketMQ 的消息发送重试机制和消息流控机制。 背景信息​ 消息发送重试 Apache RocketM Q的消息发送重试机制主要为您解答如下问题&#xff1a; 部分节点异常是否影响消息发送&#xff1f; 请求重试是否会阻塞业务调用&#xff1f; 请求重试会带来什…...

OpenCV笔记

opencv读取视频操作 import cv2video cv2.VideoCapture("./1.mp4")if video.isOpened():# video.read() 一帧一帧地读取# open 得到的是一个布尔值&#xff0c;就是 True 或者 False# frame 得到当前这一帧的图像open, frame video.read() else:open Falsewhile …...

Mysql基础(下)之函数,约束,多表查询,事务

&#x1f442; 回到夏天&#xff08;我多想回到那个夏天&#xff09; - 傲七爷/小田音乐社 - 单曲 - 网易云音乐 截图自 劈里啪啦 -- 黑马Mysql&#xff0c;仅学习使用 &#x1f447;原地址 47. 基础-多表查询-表子查询_哔哩哔哩_bilibili 目录 &#x1f982;函数 &#x1f3…...

Android 屏幕适配各种宽高比的手机

由于android 手机的屏幕宽高比样式太多了&#xff0c;在设计UI时&#xff0c;很多时候&#xff0c;会因为宽高比&#xff0c;分辨率不同会有展示上的差异。 我是这样解决的 在activity的onCreate方法前&#xff0c;调用&#xff1a; fun screenFit(context: Context) {val me…...

云计算——云计算与虚拟化的关系

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.虚拟化 1.什么是虚拟化 2.虚拟化技术作用 二.云计算与虚拟化的关系 三.虚…...

手机变局2023:一场瞄准产品和技术的“思维革命”

以折叠屏冲高端&#xff0c;已成为中国手机厂商们的共识。 在这个苹果未涉足的领域&#xff0c;国产手机厂商们加快脚步迭代推新&#xff0c;积极抢占机遇。但平心而论&#xff0c;虽然国产折叠屏机型众多&#xff0c;但市场上始终缺乏一款突破性的产品作为标杆&#xff0c;为…...

【Linux】自动化构建工具-make/Makefile详解

前言 大家好吖&#xff0c;欢迎来到 YY 滴 Linux系列 &#xff0c;热烈欢迎&#xff01;本章主要内容面向接触过Linux的老铁&#xff0c;主要内容含 欢迎订阅 YY 滴Linux专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 订阅专栏阅读&#xff1a;YY的《…...

1 js嵌入html使用

1.1 直接在html内部使用js代码 使用script标签&#xff0c;在前后标签内部写的代码即为js代码。 <body><p id"p1">初始段落</p> <!--id是为了定位需要更改内容的标签--><button type"button" onclick"showNum()">…...

总结RoctetMQ

RoctetMQ 定义优缺点场景使用方式消息顺序问题死信幂等性可视化面板 定义 优缺点 场景 使用方式 消息顺序问题 死信 幂等性 可视化面板...

命名约定~

1.变量的命名约定 JavaScript 变量名称是区分大小写的&#xff0c;大写和小写字母是不同的。比如&#xff1a; let DogName Scooby-Doo; let dogName Droopy; let DOGNAME Odie; console.log(DogName); // "Scooby-Doo" console.log(dogName); // "Dro…...

Python基础-列表(list)和元组(tuple)

Python包含6种内建的序列&#xff1a;列表&#xff0c;元组&#xff0c;字符串&#xff0c;Unicode字符串&#xff0c;buffer对象&#xff0c;xrange对象&#xff0c;本文讨论列表和元组。 1.列表可以修改&#xff0c;元组则不能修改。 2.几乎在所有的情况下&#xff0c;列表…...

Dubbo介绍及使用

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…...

初阶C语言-分支和循环语句(下)

“花会沿途盛开&#xff0c;以后的路也是。” 今天我们一起来继续学完分支语句和循环语句。 分支和循环 3.循环语句3.4 do...while()循环3.4.1 do语句的用法 3.5关于循环的一些练习3.6 goto语句 3.循环语句 3.4 do…while()循环 3.4.1 do语句的用法 do循环语句;//当循环语句…...

pytorch工具——pytorch中的autograd

目录 关于torch.tensor关于tensor的操作关于梯度gradients 关于torch.tensor 关于tensor的操作 x1torch.ones(3,3) xtorch.ones(2,2,requires_gradTrue) print(x1,\n,x)yx2 print(y) print(x.grad_fn) print(y.grad_fn)zy*y*3 outz.mean() print(z,out)注意 atorch.randn(2,…...

Linux--进程池

1.一个父进程生成五个子进程且分别建立与子进程管道 ①用for循环&#xff0c;结束条件为<5 ②father父进程每次都要离开for循环&#xff0c;生成下一个子进程和管道 2.#include <cassert>和#include <assert.h>的区别 assert.h 是 C 标准库的头文件&#xff…...

SpringCloudAlibaba微服务实战系列(四)Sentinel熔断降级、异常fallback、block细致处理

SpringCloudAlibaba Sentinel降级和熔断 接着上篇文章的内容&#xff0c;在Sentinel中如何进行降级和熔断呢&#xff1f; 熔断降级规则 降级规则 在Sentinel中降级主要有三个策略&#xff1a;RT、异常比例、异常数&#xff0c;也是针对某个资源的设置。而在1.8.0版本后RT改为…...

WebDAV之π-Disk派盘+ WinSCP

WinSCP是一个免费的开源文件传输应用程序&#xff0c;它使用文件传输协议&#xff0c;安全外壳文件传输协议和安全复制协议来进行纯文件或安全文件传输。该应用程序旨在与Windows一起使用&#xff0c;并支持常见的Windows桌面功能&#xff0c;例如拖放文件&#xff0c;跳转列表…...

Python案例分析|使用Python图像处理库Pillow处理图像文件

本案例通过使用Python图像处理库Pillow&#xff0c;帮助大家进一步了解Python的基本概念&#xff1a;模块、对象、方法和函数的使用 使用Python语言解决实际问题时&#xff0c;往往需要使用由第三方开发的开源Python软件库。 本案例使用图像处理库Pillow中的模块、对象来处理…...

音视频——压缩原理

H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛&#xff0c; 最流行的。随着 x264/openh264以及ffmpeg等开源库的推出&#xff0c;大多数使用者无需再对H264的细节做过多的研究&#xff0c;这大降低了人们使用H264的成本。 但为了用好H264&#xff0c;我们还是要对…...

实时手机检测-通用模型教程:如何用Gradio搭建检测界面

实时手机检测-通用模型教程&#xff1a;如何用Gradio搭建检测界面 1. 引言与模型概述 1.1 手机检测的应用价值 在现代计算机视觉应用中&#xff0c;手机检测是一个具有广泛实用场景的技术。从智能监控系统中的打电话行为识别&#xff0c;到公共场所的手机使用管理&#xff0…...

巨有科技:景区二消低迷?智慧旅游重构盈利模式

门票降价、客流增长但营收不涨&#xff0c;是当下多数景区面临的经营困境。过度依赖门票经济&#xff0c;二次消费&#xff08;二消&#xff09;占比低、业态单一&#xff0c;景区盈利空间不断被压缩。2026年文旅行业告别粗放增长&#xff0c;景区盈利重心向二次消费转移&#…...

Jellyfin演员头像总是不全?试试这个TMM刮削+本地导入的终极方案

Jellyfin演员头像缺失难题的工程级解决方案&#xff1a;TMM刮削与本地化元数据管理实践 每次打开精心搭建的Jellyfin影音库&#xff0c;看到那些残缺不全的演员头像&#xff0c;就像翻开一本缺页的相册——这种体验对于追求完美的影音爱好者来说简直难以忍受。经过反复测试发现…...

OpenClaw关键词挖掘Agent配置(附SOP脚本,可直接复制使用)

OpenClaw关键词挖掘Agent全栈配置指南&#xff08;附可执行SOP脚本&#xff09;一、系统架构解析OpenClaw关键词挖掘系统采用分布式架构&#xff0c;核心由以下模块构成&#xff1a;数据采集层实时爬虫引擎&#xff1a;支持动态IP代理&#xff0c;突破反爬限制API集成模块&…...

ElasticJob HTTP作业:RESTful接口调度的终极指南

ElasticJob HTTP作业&#xff1a;RESTful接口调度的终极指南 ElasticJob是ShardingSphere生态中一款分布式任务调度解决方案&#xff0c;它提供了丰富的作业类型支持&#xff0c;其中HTTP作业是实现跨系统任务调度的理想选择。通过HTTP作业&#xff0c;您可以轻松实现基于REST…...

AIGlasses OS Pro 模型优化实战:针对STM32F103C8T6的轻量化模型部署

AIGlasses OS Pro 模型优化实战&#xff1a;针对STM32F103C8T6的轻量化模型部署 最近有不少朋友在问&#xff0c;像AIGlasses OS Pro里那些能看懂世界的视觉模型&#xff0c;能不能塞进一个成本几十块钱、资源极其有限的单片机里跑起来&#xff1f;比如大家手头都有的那块“蓝…...

ChatTTS 语音合成中如何高效添加语气词:原理与实战指南

最近在做一个语音播报项目&#xff0c;用到了ChatTTS&#xff0c;发现生成的语音虽然清晰&#xff0c;但总感觉少了点“人味儿”。特别是那些“嗯”、“啊”、“哦”之类的语气词&#xff0c;插进去之后特别生硬&#xff0c;像机器人在念稿&#xff0c;用户体验大打折扣。这让我…...

零基础玩转OpenClaw:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF镜像快速入门

零基础玩转OpenClaw&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF镜像快速入门 1. 为什么选择云端镜像快速体验OpenClaw 第一次听说OpenClaw时&#xff0c;我就被它的自动化能力吸引了——能让AI像人类一样操作我的电脑完成各种任务。但当我看到本地安装…...

关于前端获取DOM节点的兼容IE6的代码封装

返回所有子元素节点的代码封装// 封装一个函数&#xff0c;这个函数可以返回元素的所有子元素节点(兼容到IE6)&#xff0c;类似children的功能function getChildren(node){// 结果数组var children [];// 遍历node这个节点的所有子节点&#xff0c;判断每一个子节点的nodeType…...

CUDA知识汇总2——cuFFT

cuFFT作为CUDA最基础的库之一&#xff0c;是NVIDIA提供的GPU加速的Fourier变换FFT库&#xff0c;能极大提升涉及FFT计算的科学计算、信号处理和深度学习等任务的速度。一、傅里叶变换和快速傅里叶变换​ Fourier变换是数字信号处理领域一个很重要的数学变换&#xff0c;它用来实…...