【C++ 08】vector 顺序表的常见基本操作
文章目录
- 前言
- 🌈 Ⅰ vector 类对象的定义
- 1. 定义格式
- 2. vector 对象的构造
- 🌈 Ⅱ vector 类对象的容量
- 🌈 Ⅲ vector 类对象的访问
- 🌈 Ⅳ vector 类对象的修改
- 🌈 Ⅴ vector 定义二维数组
前言
vector 介绍
- vector 是一个可变大小数组的序列容器。
- 和顺序表一样,vector 也采用连续的空间存储不同类型的元素。
- 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 处插入 30v1.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 一维数组类型的数据。
- 一堆的一维数组组在一起就构成了二维数组。

相关文章:
【C++ 08】vector 顺序表的常见基本操作
文章目录 前言🌈 Ⅰ vector 类对象的定义1. 定义格式2. vector 对象的构造 🌈 Ⅱ vector 类对象的容量🌈 Ⅲ vector 类对象的访问🌈 Ⅳ vector 类对象的修改🌈 Ⅴ vector 定义二维数组 前言 vector 介绍 vector 是一…...
Day67:WEB攻防-Java安全JNDIRMILDAP五大不安全组件RCE执行不出网
知识点: 1、Java安全-RCE执行-5大类函数调用 2、Java安全-JNDI注入-RMI&LDAP&高版本 3、Java安全-不安全组件-Shiro&FastJson&JackJson&XStream&Log4j Java安全-RCE执行-5大类函数调用 Java中代码执行的类: GroovyRuntimeExecPr…...
GCNv2_SLAM-CPU详细安装教程(ubuntu18.04)
GCNv2_SLAM-CPU详细安装教程-ubuntu18.04 前言一、安装第三方库1.安装Pangolin2.安装OpenCV3.安装Eigen4.安装Pytorch(c) 二、安装以及运行GCNv2_SLAM1.安装编译GCNv2_SLAM2.RGBD模式模式运行演示案例 总结 前言 paper:https://arxiv.org/pdf/1902.11046.pdf githup::https://…...
使用gitee自动备份文件
需求 舍友磁盘前两天gg了,里面的论文没有本地备份,最后费劲巴拉的在坚果云上找到了很早前的版本。我说可以上传到github,建一个私人仓库就行了,安全性应该有保证,毕竟不是啥学术大亨,不会有人偷你论文。但是…...
智慧城市新篇章:数字孪生的力量与未来
随着信息技术的迅猛发展和数字化浪潮的推进,智慧城市作为现代城市发展的新模式,正在逐步改变我们的生活方式和社会结构。在智慧城市的构建中,数字孪生技术以其独特的优势,为城市的规划、管理、服务等方面带来了革命性的变革。本文…...
python讲解(2)
目录 一.变量与赋值 二.字符串类型 引号: 三引号: 字符串拼接 三.len函数 四.注释 注释的方法 一.# 二.文档字符串 注释的要求 群体注释 五.python的报错 六.bool类型 一.变量与赋值 python中的变量是不需要声明的,直接定义即…...
安卓安装Magisk面具以及激活EdXposed
模拟器:雷电模拟器 安卓版本: Android9 文中工具下载链接合集:https://pan.baidu.com/s/1c1X3XFlO2WZhqWx0oE11bA?pwdr08s 前提准备 模拟器需要开启system可写入和root权限 一、安装Magisk 1. 安装magisk 将magisk安装包拖入模拟器 点击:…...
C到C++的敲门砖-1
文章目录 关键字命名空间输入和输出缺省参数函数重载 关键字 相较于C语言32个关键字: autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifwhilesta…...
Qt文件以及文件夹相关类(QDir、QFile、QFileInfo)的使用
关于Qt相关文件读写操作以及文件夹的一些知识,之前也写过一些博客: Qt关于路径的处理(绝对路径、相对路径、路径拼接、工作目录、运行目录)_qt 相对路径-CSDN博客 C/Qt 读写文件_qt c 读取文本文件-CSDN博客 C/Qt读写ini文件_…...
ChatGPT编程实现简易聊天工具
ChatGPT编程实现简易聊天工具 今天借助[[小蜜蜂]][https://zglg.work]网站的ChatGPT练习socket编程,实现一个简易聊天工具软件。 环境:Pycharm 2021 系统:Mac OS 向ChatGPT输入如下内容: ChatGPT收到后,根据返回结…...
C#-用于Excel处理的程序集
在.NET开发中,处理Excel文件是一项常见的任务,而有一些优秀的Excel处理包可以帮助开发人员轻松地进行Excel文件的读写、操作和生成。本文介绍了NPOI、EPPlus和Spire.XLS这三个常用的.NET Excel处理包,分别详细介绍了它们的特点、示例代码以及…...
HTTPS基础
目录 HTTPS简介 HTTP与HTTPS的区别 CA证书 案例 服务器生成私钥与证书 查看证书和私钥存放路径 Cockpit(图像化服务管理工具) HTTPS简介 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密&…...
【Flink SQL】Flink SQL 基础概念(四):SQL 的时间属性
《Flink SQL 基础概念》系列,共包含以下 5 篇文章: Flink SQL 基础概念(一):SQL & Table 运行环境、基本概念及常用 APIFlink SQL 基础概念(二):数据类型Flink SQL 基础概念&am…...
文字弹性跳动CSS3代码
文字弹性跳动CSS3代码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 下载地址 文字弹性跳动CSS3代码...
前端小白的学习之路(事件流)
提示:事件捕获,事件冒泡,事件委托 目录 事件模型(DOM事件流) 1.事件是什么 2.事件流 1).事件流的三个阶段 3.参考代码 二、事件委托 1.概念 2.使用案例 3.阻止冒泡行为 事件模型(DOM事件流) 1.事件是什么 1). 事件是HTML和Javascr…...
电脑文件误删除如何恢复?分享三个简单数据恢复方法
在日常使用电脑的过程中,文件误删除的情况时有发生。无论是由于操作失误还是病毒感染,丢失的文件都可能对我们的工作和学习造成极大的影响。因此,掌握文件恢复的方法显得尤为重要。下面围绕“电脑文件误删除如何恢复”这一主题,给…...
MySQL实战:监控
监控指标 性能类指标 名称说明QPS数据库每秒处理的请求数量TPS数据库每秒处理的事务数量并发数数据库实例当前并行处理的会话数量连接数连接到数据库会话的数量缓存命中率Innodb的缓存命中率 功能类指标 名称说明可用性数据库是否正常对外提供服务阻塞当前是否有阻塞的会话…...
MySQL自增主键自动生成的主键重置
需求描述: 从主键1开始,insert操作自增了五个,库里五条数主键是1、2、3、4、5; 然后把主键是3、4、5的三条数据给删了,再继续insert,主键就是6了 因为这里表会把最大的数即5记住,下次自增即为…...
reverse_iterator实现
对于实现reverse_iterator,我们可以学栈和队列的实现过程,利用适配器,实现如下; #pragma oncetemplate<class Iterator,class Ref,class Ptr> class reverse_Iterator { public://构造函数:reverse_Iterator(Iterator it):…...
C++:什么情况下函数应该声明为纯虚函数
在C中,函数应该在以下情况下声明为纯虚函数: 抽象基类:当你希望定义一个基类,该基类不能被实例化,只能作为其他类的基类时,你应该在基类中声明至少一个纯虚函数。这样的基类被称为抽象基类。纯虚函数通过在…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
