【C++ 08】vector 顺序表的常见基本操作

文章目录

  • 前言
  • 🌈 Ⅰ vector 类对象的定义
    • 1. 定义格式
    • 2. vector 对象的构造
  • 🌈 Ⅱ vector 类对象的容量
  • 🌈 Ⅲ vector 类对象的访问
  • 🌈 Ⅳ vector 类对象的修改
  • 🌈 Ⅴ vector 定义二维数组

前言

vector 介绍

  1. vector 是一个可变大小数组的序列容器。
  2. 和顺序表一样,vector 也采用连续的空间存储不同类型的元素。
  3. vector 使用类模板定义,顺序表内的元素类型根据 vector 指定的元素决定。

vector 引入

  • 使用 vector 之前要先添加头文件 #include <vector> ,并且还要展开 std 空间域内的 vector 类 using std::vector;

🌈 Ⅰ vector 类对象的定义

1. 定义格式

  • 类模板生成的 vector 顺序表中的元素类型为指定的元素类型。
    • 如: typename 为 int 则 vector 顺序表内的元素类型也为 int,其余同理。 本篇文章主要以 int 类型举例。
vector<typename> name;

2. vector 对象的构造

构造函数功能说明
vector()无参构造
vector(size_type n, const value_type& val = value_type())构造并初始化 n 个值为 val 的元素,val 的缺省值为 0
vector (const vector& x)使用已有的 vector 对象拷贝构造新的 vector 对象
vector (InputIterator first, InputIterator last)使用迭代器进行构造

在这里插入图片描述

🌈 Ⅱ vector 类对象的容量

函数说明

函数名称功能说明
size()获取顺序表的有效元素个数
empty()判断当前顺序表是否为空
capacity()返回当前顺序表能够容纳的最多有效数据个数
reserve(n)为指定顺序表预留 n 个元素的空间,实际开辟的空间只会 >= n
resize(n, val)将当前顺序表的有效元素改为 n 个,如果 n 大于当前有效数据个数,则用 val 填充
void test2()
{
	vector<int> v{ 1,2,3,4,5,6,7,8,9,10 };

	cout << "size: " << v.size() << endl;			// 获取当前顺序表的有效元素个数
	cout << "empty: " << v.empty() << endl;			// 判断当前顺序表是否为空
	cout << "capacity: " << v.capacity() << endl;	// 判断当前可容纳的最多有效元素个数

	v.reserve(100);		
	cout << "reserve: " << v.capacity() << endl;	// 预留 >= 100 个元素的空间

	v.resize(15,3);		
	cout << "resize: " << v.size() << endl;			// 将有效元素个数改成 15 个,超出部分用 3 填充

	for (auto val : v)
		cout << val << " ";
	cout << endl;
}

在这里插入图片描述

🌈 Ⅲ vector 类对象的访问

1. operator[] 访问

  • 对方括号 [ ] 进行了重载,使得 vector 对象能够像普通数组那样通过 下标 + [ ] 进行访问。

在这里插入图片描述

2. 迭代器 iterator 访问

  • 当前要使用的 iterator 属于 vector 类域,需要 vector<int::iterator 指定使用的是 vector 类域内的迭代器。
iterator 的使用接口说明
begin() + end()begin() 获取数组第一个元素的地址,end() 获取最后一个有效元素的下一个位置
rbegin() + rend()rbegin() 获取最后一个有效数据的位置,rend() 获取第一个数据的前一个位置

在这里插入图片描述

3. 获取首尾元素

函数名称功能说明
front()获取顺序表的第一个有效元素
back()获取顺序表的最后一个有效元素

在这里插入图片描述

🌈 Ⅳ vector 类对象的修改

函数名称功能说明
push_back(val)将 val 尾插进顺序表
pop_back()对顺序表执行尾删
insert(iterator position, const value_type& val)向迭代器指向的 pos 位置处插入一个值 val,原 pos 及之后的元素往后挪
insert(iterator position, InputIterator first, InputIterator last)在指定位置处插入一段迭代器区间内的值
swap(vector& x)交换两个 vector 对象内的数据
clear()清除顺序表内的有效数据
void test4()
{
	vector<int> v1{ 1,2,3,4,5 };
	vector<int> v2{ 5,4,3,2,1 };

	v1.push_back(1);				// 将 1 尾插进顺序表
	v1.pop_back();					// 对顺序表执行伪删
	v1.insert(v1.begin() + 3, 30);	// 在下标 3 处插入 30
	v1.swap(v2);					// 交换 v1 和 v2 内的数据
	
	// 将 v2 的 0 ~ 2 处的值插入 v1 的 0 号位置
	v1.insert(v1.begin(), v2.begin(), v2.begin() + 2);	
}

🌈 Ⅴ vector 定义二维数组

vector<vector<int>> array;
  • vector 是一个会根据指定类型生成具体类的类模板,<> 号里的可以是任意数据类型,vector<vector> array 表示 array 的每个元素都是一个 vector 一维数组类型的数据。
  • 一堆的一维数组组在一起就构成了二维数组。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

julia语言中的决策树

决策树&#xff08;Decision Tree&#xff09;是一种基本的分类与回归方法&#xff0c;它呈现出一种树形结构&#xff0c;可以直观地展示决策的过程和结果。在决策树中&#xff0c;每个内部节点表示一个属性上的判断条件&#xff0c;每个分支代表一个可能的属性值&#xff0c;每…

使用IDEA进行Scala编程相关安装步骤

一、相关安装包&#xff08;jdk最好用1.8版本&#xff0c;其他不做要求&#xff09; IDEA安装包 jdk-8u101-windows-x64.exe scala-2.12.19 二、安装顺序 在安装IDEA之前&#xff0c;首先要安装好java和scala环境&#xff0c;以便后续配置 三、jdk和scala安装要求 1.jdk安…

【论文阅读】DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer

DiffSpeaker: 使用扩散Transformer进行语音驱动的3D面部动画 code&#xff1a;GitHub - theEricMa/DiffSpeaker: This is the official repository for DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer paper&#xff1a;https://arxiv.org/pdf/…

【Kubernetes】k8s删除master节点后重新加入集群

目录 前言一、思路二、实战1.安装etcdctl指令2.重置旧节点的k8s3.旧节点的的 etcd 从 etcd 集群删除4.在 master03 上&#xff0c;创建存放证书目录5.把其他控制节点的证书拷贝到 master01 上6.把 master03 加入到集群7.验证 master03 是否加入到 k8s 集群&#xff0c;检查业务…

Docker 安装 LogStash

关于LogStash Logstash&#xff0c;作为Elastic Stack家族中的核心成员之一&#xff0c;是一个功能强大的开源数据收集引擎。它专长于从各种来源动态地获取、解析、转换和丰富数据&#xff0c;并将这些结构化或非结构化的数据高效地传输到诸如Elasticsearch等存储系统中进行集…

【LabVIEW FPGA入门】浮点数类型支持

如今&#xff0c;使用浮点运算来设计嵌入式系统的需求变得越来越普遍。随着 FPGA 因其固有的大规模并行性而在浮点性能方面继续超越微处理器&#xff0c;这种情况正在加剧。线性代数和数字信号处理 (DSP) 等高级算法可以受益于浮点数据类型的高动态范围精度。LabVIEW FPGA 通过…

【全开源】JAVA语聊大厅+陪玩系统语音聊天APP系统源码

我们技术使用后台服务 springbootmybatisplusmysql用户端 uniapp&#xff08;vue语法&#xff09;管理后台 vueelementUi 一、功能介绍 动态列表、发布动态、精准分类 创建语聊房间、房间玩法、违规公示、聊天显示 赠送礼物、上麦功能、房间管理、礼物中心、我的接单 我的技…

大话设计模式——8.原型模式(Prototype Pattern)

1.介绍 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。属于创建型模式。 UML图&#xff1a; 1&#xff09;浅拷贝&#xff1a; 指创建一个新的对象&#xff0c;然后将原始对象的字段值复制到新对象中。如果字段是基本类型&#xff0c;直接复制…

将FastSAM中的TextPrompt迁移到MobileSAM中

本博文简单介绍了SAM、FastSAM与MobileSAM,主要关注于TextPrompt功能的使用。从性能上看MobileSAM是最实用的,但其没有提供TextPrompt功能,故而参考FastSAM中的实现,在MobileSAM中嵌入TextPrompt类。并将TextPrompt能力嵌入到MobileSAM官方项目提供的gradio.py部署代码中,…

阿里云下载安装centos

这里以centos7.x版本下载安装为例 : 网址 : 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 点击centos : 再点击下载地址 : 找到 7/ 并点击 : 找到isos/并点击 : 点击x86_64 : 找到4.4G的文件点击下载 ; 点击创建新的虚拟机 , 然后选择典型 &#xff0c; 然后点击下一…

HarmonyOS(鸿蒙)ArcUI组件

方舟开发框架&#xff08;简称ArkUI&#xff09;为HarmonyOS应用的UI开发提供了完整的基础设施&#xff0c;包括简洁的UI语法、丰富的UI功能&#xff08;组件、布局、动画以及交互事件&#xff09;&#xff0c;以及实时界面预览工具等&#xff0c;可以支持开发者进行可视化界面…

Centos yum报错‘Connection timed out after 30002 milliseconds‘) 正在尝试其它镜像。解决办法

修改源后更新报错 我有两个Centos 一个7 一个8&#xff0c;疏忽在7上面配置了8的源后报错&#xff0c;通过下面的报错发现提示的是Centos7的源找不到&#xff0c;才意识到是不是配置错了源。 报错信息&#xff1a; http://mirrors.aliyun.com/centos/7/AppStream/x86_64/os/r…

html5cssjs代码 023 公制计量单位进位与换算表

html5&css&js代码 023 公制计量单位进位与换算表 一、代码二、解释 这段HTML代码定义了一个网页&#xff0c;用于展示公制计量单位的进位与换算表。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"utf-8&quo…

Java代码审计安全篇-CSRF漏洞

前言&#xff1a; 堕落了三个月&#xff0c;现在因为被找实习而困扰&#xff0c;着实自己能力不足&#xff0c;从今天开始 每天沉淀一点点 &#xff0c;准备秋招 加油 注意&#xff1a; 本文章参考qax的网络安全java代码审计和部分师傅审计思路以及webgoat靶场&#xff0c;记录…

【计算机视觉】二、图像形成——实验:2D变换编辑器2.0(Pygame)

文章目录 一、向量和矩阵的基本运算二、几何基元和变换1、几何基元(Geometric Primitives)2、几何变换(Geometric Transformations)2D变换编辑器0. 项目结构1. Package: guibutton.pywindow.py1. __init__(self, width, height, title)2. add_buttons(self)3. clear(self)4. dr…

数据结构和算法:哈希表

哈希表 哈希表&#xff08;hash table&#xff09;&#xff0c;又称散列表&#xff0c;它通过建立键 key 与值 value 之间的映射&#xff0c;实现高效的元素查询。具体而言&#xff0c;向哈希表中输入一个键 key &#xff0c;则可以在 &#x1d442;(1) 时间内获取对应的值 va…

Jenkins安装部署

目录 一、CI/CD介绍 二、持续集成与持续交付 持续集成&#xff08;CI&#xff09; 持续交付&#xff08;CD&#xff09; 持续集成的组成要素 持续集成的好处 持续集成的流程 三、Gitlab简介与特点 四、Gitlab CI/CD工作原理 五、Gitlab的部署与安装 安装依赖环境 G…

uniapp,实时获取系统时间(动态显示)

在开发中&#xff0c;如果涉及到时间有关的&#xff0c;有可能需要把系统的时间以动态的形式展示出来。 一、页面效果 后面的秒钟是会变的&#xff0c;一秒改变一下&#xff0c;也就是说这个就是与系统时间一致的。 二、思路 我们通过new date对象&#xff0c;获取系统的时间…

鸿蒙开发实战:【Faultloggerd部件】

theme: z-blue 简介 Faultloggerd部件是OpenHarmony中C/C运行时崩溃临时日志的生成及管理模块。面向基于 Rust 开发的部件&#xff0c;Faultloggerd 提供了Rust Panic故障日志生成能力。系统开发者可以在预设的路径下找到故障日志&#xff0c;定位相关问题。 架构 Native In…

javaweb数据相应以及格式控制

莫道桑榆晚&#xff0c;为霞尚满天&#xff0c;友友们好今天更新的是相应数据格式 响应介绍 前面我们所见得都是数据请求&#xff0c;通过修改对应的路径参数&#xff0c;我们就可以进行必要的访问&#xff0c;但是对于数据的响应并没有太多的介绍&#xff0c;并且我们知道数…