C++:vector
目录
一、关于vector
二、vector的相关函数
三、相关函数的使用
①构造函数
②size
③[]
编辑
④push_back
⑤迭代器iterator
⑥reserve
⑦resize
⑧find
⑨insert
⑩erase
⑪sort
一、关于vector
vector比较像数组
观察可知,vector有两个模板参数
第一个模板参数是一个数据类型
这里的数据类型可以是int,可以是double,甚至可以是string
第二个模板参数是空间配置器,给了缺省参数,默认用库里的空间配置器,如果有特殊场景需要自己实现,也可以用自己编写的空间配置器
另外,前面学习了string,只要string能够掌握,那么vector也就基本会用了,因为这些容器内部提供的接口都是非常类似的
二、vector的相关函数
vector里是没有find的,之所以没有是因为把find放到一个头文件里的,需要包头文件,即:
#include<algorithm>
三、相关函数的使用
①构造函数
有四种构造函数
第一个是可以用自己的空间配置器进行构造函数初始化
第二个是用n个val初始化,其中size_type也就是size_t,即无符号整型
而value_type是:
看图可知value_type是第一个模板参数typedef的,allocator_type是第二个模板参数typedef的
第三个是迭代器区间构造
第四个是拷贝构造
这是列举的三种构造函数的方式
②size
size就是vector中存储数据的数量
vector的size也和string的size一样,可以用于遍历vector
③[]
[]可以让vector像数组一样去访问
上面的size所举例也用到了[]
[]的返回值的第n个位置的引用
所以返回值可以修改,即:
[]的作用和at几乎一致,但是[]是assert判断是否越界,越界直接终止程序,而at越界则是抛异常进行处理
④push_back
push_back是用于尾插数据
⑤迭代器iterator
迭代器是一个像指针一样的东西
it是自己取的名字,叫什么都行
迭代器都是在内部定义的,所以属于这个类域,因此是vector<int>::iterator调用
当然迭代器也可以修改:
这里的begin和end和string里的一样,就不演示了
当然iterator是正向迭代器,reverse_iterator就是反向迭代器了,如果打印也就是反向
rbegin和rend也就不多说了
当然,范围for也可以用,因为范围for底层就是迭代器实现的
⑥reserve
reserve是用于提前开空间,避免扩容造成的损耗
提前开20个空间,减少扩容损耗
⑦resize
resize是用于提前开空间加初始化
⑧find
这里的find是在头文件algorithm里的,vector并没有提供,是一个函数模板
传一个迭代器区间给它,返回值是迭代器
是左闭右开的区间
如果没有找到返回的是last,即end()的返回值
所以需要用if语句进行判断,find一般与insert结合起来用,如下图:
⑨insert
insert是用于插入元素
第一种用法就是pos位置插入val,即上面find用法中的举例
第二种是pos位置插入n个val
第三种是pos位置插入迭代器区间,不常见,了解即可
⑩erase
erase是删除数据
erase给出了两种用法,一种是删除pos位置的数据,一种是删除一个迭代器区间的数据
erase也是需要if语句判断返回值是否找到了,如果不判断直接删除,若没有找到,直接删除会报错
⑪sort
sort是排序算法
sort同样不是vector中的,也是包在头文件algorithm中,可以针对各个类型的容器排序
可以传迭代器区间给它即可排序,默认升序,如果想排降序或是自己写一个仿函数作为第三个参数也支持
库里是有两个写好的仿函数,一个less一个greater,less是升序,greater是降序,都是类模板
但是需要注意的是greater是在functional的头文件中
不写默认是less,即升序,如果想改为降序,在sort的第三个参数传一个greater的匿名对象即可:
当然能排序vector,string也是可以排序的,也是传入string的迭代器区间即可,不同的是如果想排降序,匿名对象中的类型要传char,即sort(s.begin(), s.end(), greater<char>())
这里也可以体验到什么叫泛型编程,我们使用的这个sort,它不管你是什么数据类型,不管升序还是降序,只需要用传入的迭代器去访问,模版的一个体现
相关文章:
C++:vector
目录 一、关于vector 二、vector的相关函数 三、相关函数的使用 ①构造函数 ②size ③[] 编辑 ④push_back ⑤迭代器iterator ⑥reserve ⑦resize ⑧find ⑨insert ⑩erase ⑪sort 一、关于vector vector比较像数组 观察可知,vector有两个模板参数…...
Android Automotive编译
系统准备 安装系统 准备一台安装Ubuntu系统的机器(windows系统的机器可以通过WSL安装ubuntu系统) 安装docker 本文使用docker进行编译,因此提前安装docker。参考网络链接安装docker并设置为不使用sudo进行docker操作。 参考链接ÿ…...
什么是50ETF期权开户条件,怎么开期权交易权限?
50ETF期权是指上证50ETF期权,标的物是上证50ETF,代码是(510500),期权是一种在上证50ETF基础上进行衍生品交易的金融工具,下文科普什么是50ETF期权开户条件,怎么开期权交易权限?本文来…...
React 从入门到精通——本文来自AI创作助手
React是一个流行的JavaScript库,用于构建用户界面。以下是React入门到精通的步骤: 入门 安装React 你可以在npm上下载React包,也可以使用其他包管理器。首先需要安装node.js,然后使用以下命令安装React: npm insta…...
【51单片机实验笔记】前篇(三) 模块功能封装汇总(持续更新)
文章目录 通用函数public.hpublic.c 延时函数delay.hdelay.c LED模块数码管模块smg.hsmg.c LED点阵模块独立按键模块矩阵按键模块外部中断模块定时器模块串口通讯模块ADC模块PWM模块 通用函数 包含常用头文件,宏定义,自定义类型,函数工具等。…...
Excel VSTO开发4 -其他事件
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 4 其他事件 针对插件的事件主要有Startup、Shutdown这两个事件,在第2节中已经讲解。在开发窗口中,选择对象…...
语音识别数据的采集方法:基本流程数据类型
“人工智能是一种模仿人类功能的产品。数据采集的方法需要针对特定的场景需求。”—–Mark Brayan (澳鹏CEO) 我们一直说,对于一个高质量的人工智能产品离不开高质量的训练数据。对于不同的人工智能我们需要不同的数据对其训练。要采集正确的数据去训练特定的模型才…...
oracle数据库给用户授权DBA权限Oracle查看哪些用户具有DBA权限
oracle数据库给用户授权DBA权限 步骤一:以sysdba身份登录到Oracle数据库 在授予DBA权限之前,我们首先要以sysdba身份登录到Oracle数据库。使用以下命令登录: sqlplus / as sysdba步骤二:创建用户(如有用户跳过&#…...
024-从零搭建微服务-系统服务(六)
写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…...
Arduino驱动TCS3200传感器(颜色传感器篇)
目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序 TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOS TCS3200RGB感应芯片和4个白色LED灯,TCS3200能在一定的范围内检测和测量几乎所有的可见光。TCS3200有大量的光检测器,每个都有红绿蓝和清…...
基于Matlab实现多个数字水印案例(附上源码+数据集)
数字水印是一种在数字图像或视频中嵌入特定信息的技术,以保护知识产权和防止盗版。在本文中,我们将介绍如何使用Matlab实现数字水印。 文章目录 实现步骤源码数据集下载 实现步骤 首先,我们需要选择一个用于嵌入水印的图像。这可以是原始图像…...
C语言之指针进阶篇(2)
目录 函数指针 函数名和&函数名 函数指针的定义 函数指针的使用 函数指针陷阱 代码1 代码2 注意 函数指针数组定义 函数指针数组的使用 指向函数指针数组的指针 书写 终于军训圆满结束了,首先回顾一下指针进阶篇(1)主要是…...
C++ 进制转化入门知识(1)
一、什么是进制 进制是一种用来表示数值的系统或方法,它是基于一个特定的基数来工作的。在我们常见的几种进制中,有: 1. **二进制(基数 2)**: 二进制只用两个数字:0和1。这是计算机内部使用…...
【React】React学习:从初级到高级(四)
React学习[四] 4 应急方案4.1 使用ref引用值4.1.1 给组件添加ref4.1.2 ref和state的不同之处4.1.3 何时使用ref 4.2 使用ref操作DOM4.2.1 获取指向节点的ref4.2.3 使用 ref 回调管理 ref 列表4.2.4 访问另一个组件的DOM节点4.2.5 用 flushSync 同步更新 state 4.3 使用Effect同…...
微信小程序登录问题(思路简略笔记)
配置问题 这是小程序登录问题,必要的两个配置。 流程思路 1. 微信小程序端,会返回一个code。 2. 查看需要返回给微信小程序端的数据。 3. 既然需要返回三个数据,先看openid如何拿到 WX-Login https://api.weixin.qq.com/sns/jscode2ses…...
Go 锁扩展
文章目录 TryLock统计 goroutine数量读写锁读锁写锁常见死锁情况写锁重入写锁中调用读锁循环依赖 TryLock 源码中自带的(我的go是 1.20版本)TryLock 会尝试获取锁,如果获取不到返回false,并不会进行休眠阻塞(和 Lock的主要区别) func (m *Mutex) TryLo…...
Docker的简介及安装
[shouce]http://shouce.jb51.net/docker_practice/栾一峰菜鸟教程参考文献 1 环境配置的难题 软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来? 用户必须保证两件事…...
安卓核心板的不同核心规格及架构介绍
安卓核心板是将核心功能封装的一块电子主板,集成芯片、存储器和功放器件等,并提供标准接口的芯片。 其特点: ● 能跑 Android 等操作系统 强大的功能及丰富的接口 支持 LCD/TP,Audio,Camera,Video&#…...
flume1.11.0安装部署
1、准备安装包apache-flume-1.11.0-bin.tar.gz; 上传; 2、安装flume-1.11.0; 解压; tar -zxvf apache-flume-1.11.0-bin.tar.gz -C /opt/server 进入conf目录,修改flume-env.sh,配置JAVA_HOME;…...
通过wordpress 自定义主题的额外CSS删除指定区块
最近用wordpress建站,想要删除指定区块,发现相关的教程蛮少的,作为小白的我搜了相关教程,好像没找到,只能自己慢慢摸索了,看了很多,终于尝试实现了,特记录下,免得自己忘了…...
Rokid Jungle--Max pro
介绍和功能开发 YodaOS-Master操作系统:以交换计算为核心,实现单目SLAM空间交互,具有高精度、实时性和稳定性。发布UXR2.0SDK,为构建空间内容提供丰富的开发套件 多模态交互 算法原子化 多种开发工具协同 多生态支持 骁龙XR2…...
【LeetCode算法系列题解】第61~65题
CONTENTS LeetCode 61. 旋转链表(中等)LeetCode 62. 不同路径(中等)LeetCode 63. 不同路径 II(中等)LeetCode 64. 最小路径和(中等)LeetCode 65. 有效数字(困难ÿ…...
MATLAB中fillmissing函数用法
目录 语法 说明 示例 包含 NaN 值的向量 由 NaN 值组成的矩阵 插入缺失数据 使用移动中位数方法 使用自定义填充方法 包含缺失端点的矩阵 包含多个数据类型的表 fillmissing函数的功能是填充缺失的条目。 语法 F fillmissing(A,constant,v) F fillmissing(A,meth…...
电脑同时连接有线和无线网络怎么设置网络的优先级
电脑同时连接有线和无线网络怎么设置网络的优先级: 我们知道在 笔记本电脑系统 中,可以通过有线或无线网络进行联网。如果电脑在有线网络和无线网络同时存在的情况,应该怎么设置有线网络优先连接呢?对此我们提供下面的方法可以让电脑在有Wi…...
el-form表单动态校验(场景: 输入框根据单选项来动态校验表单 没有选中的选项就不用校验)
el-form表单动态校验 el-form常规校验方式: // 结构部分 <el-form ref"form" :model"form" :rules"rules"><el-form-item label"活动名称: " prop"name" required><el-input v-model"form.name" /…...
Java 数据结构与算法应该如何学习?
学习数据结构是计算机科学和软件工程领域中的重要基础知识之一。掌握数据结构对于编写高效、可扩展和可维护的代码至关重要。 1、掌握基本概念 首先,你需要掌握数据结构的基本概念。了解不同类型的数据结构,如数组、链表、栈、队列、树、图等ÿ…...
力扣(LeetCode)算法_C++——有效的数独
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) …...
制造企业如何优化物料控制?
导 读 ( 文/ 2127 ) 物料控制是指对制造过程中所涉及的物料流动和库存进行有效管理和控制的过程。它包括物料需求计划、供应商管理、物料采购、物料接收和入库、物料库存管理以及物料发放和使用等关键环节。通过精确的物料需求计划和库存管理,物料控制可以确保物料供…...
《Go语言在微服务中的崛起:为什么Go是下一个后端之星?》
🌷🍁 博主猫头虎🐅🐾 带您进入 Golang 语言的新世界✨✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂…...
因为axios请求后端,接收不到token的问引出的问题
vue axios请求后端接受不到token的问题。 相关概念 什么是跨域? 跨域指的是在浏览器环境下,当发起请求的域(或者网站)与请求的资源所在的域之间存在协议、主机或端口中的任何一个条件不同的情况。换句话说,只要协议、…...
从零开始建设企业网站/简阳seo排名优化课程
成交量(VOL)作为市场较为重要的指标之一,其量增量缩影响着价格的变动,亦看做是多空双方博弈的结果。那么如何洞察成交量(VOL)以进行交易呢? 首先我们先了解成交量(VOL)&…...
电脑网站适应手机如何做/网页制作作业100例
2019独角兽企业重金招聘Python工程师标准>>> 对接外部的一个接口时,发现一个鬼畜的问题,一直提示缺少某个参数,同样的url,通过curl命令访问ok,但是改成RestTemplate请求就不行;因为提供接口的是…...
目前安卓手机哪个最好用/电子商务seo名词解释
一、 上传本地图片显示发生了unsage iframe 的 src 属性是资源 URL 安全上下文,因为不可信源可以在用户不知情的情况下执行某些不安全的操作。DomSanitizer 安全URL脚本访问XSS :是网站 Angular 2 如何保护我们免受 XSS 攻击 Angular 2 中默认将所有输入…...
必要这个网站怎么样/简阳seo排名优化课程
一、安装JDK1、首先到Java的网站上下载JDK[rootshenzhen ~]wget http://download.oracle.com/otn-pub/java/jdk/6u25-b06/jdk-6u25-linux-i586-rpm.bin2、通过chmod x jdk-6u25-linux-i586-rpm.bin命令给用户添加可执行权限3、通过./jdk-6u25-linux-i586-rpm.bin命令来执行安装…...
贵阳东方蜜蜂网站建设/1688自然排名怎么做好
大多数行业都免不了此类琐碎繁杂的工作,而他们却又占用很多时间、很容易让人产生厌倦心理。如果被迫耗在这些数据整理的事情上,工作效率自然难以提高。这时Python提供了一种解决的方法。只要第一次花点时间做好小工具,后期工作便可以一键完成…...
做婚庆网站的功能定位/整站外包优化公司
线性存储元素时,元素的关系也同时确定了。而非线性数据结构就不同了,需要同时考虑存储数据元素和数据元素的逻辑关系。例如,图这种数据结构的矩阵存储就是用一个顶点向量存储顶点元素,再用一个邻接矩阵存储元素关系。由于图的结构…...