【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中,函数应该在以下情况下声明为纯虚函数: 抽象基类:当你希望定义一个基类,该基类不能被实例化,只能作为其他类的基类时,你应该在基类中声明至少一个纯虚函数。这样的基类被称为抽象基类。纯虚函数通过在…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...