C++ vector 介绍与使用
目录
1.vector是什么?
2.vector的使用
2.1vector的构造函数
2.2vector iterator 的使用
2.3vector 空间增长问题
2.4vector的增删查改
1.vector是什么?
oid test_vector1()
{vector<string> v;string name1("张三");v.push_back(name1);v.push_back(string("张三"));//匿名对象v.push_back("张三");//在 C++ 中,单参数的构造函数默认支持隐式类型转换。vector<vector<int>> vv;//相当于二维数组
}
2.vector的使用

下面是对vector重要接口的介绍。
2.1vector的构造函数
构造函数声明 | 接口说明 |
vector() | 无参构造 |
vector ( size_type n, const value_type& val = value_type() ) | 构造并初始化 n 个 val |
vector (const vector& x) | 拷贝构造 |
vector (InputIterator first, InputIterator last) | 使用迭代器区间初始化 |
int TestVector2()
{vector<int> first; // 空参构造vector<int> second(4, 100); // 初始化4个100vector<int> third(second.begin(), second.end()); // 迭代器区间初始化vector<int> fourth(third); // 拷贝构造// 利用迭代器区间初始化不仅仅可以用vector的迭代区间也可以用其他容器的迭代器区间int myints[] = { 16,2,77,29 };vector<int> fifth(myints, myints + sizeof(myints) / sizeof(int));string str("hello world");vector<char> sixth(str.begin(), str.end());return 0;
}
2.2vector iterator 的使用
iterator 的使用 | 接口说明 |
begin+end | 获取第一个数据位置的迭代器 , 获取最后一个数据的下一个位置 的迭代器 |
rbegin + rend | 获取最后一个数据位置的迭代器 ,获取第一个数据前一个位置的迭代器 |
有了迭代器就可以和C++库里面实现的一些算法结合在一起进行使用了 。
例如C++库里实现的sort和find算法,所传参数都是迭代器的区间。
#include<algorithm>
#include<vector>
using namespace std;
int main()
{int a[] = { 16,2,77,29 };vector<int> v5(a, a+4);//默认降序 >sort(v5.begin(),v5.end());//升序 <sort(v5.begin(), v5.end(), greater<int>());//greater<int>匿名对象比较器 int a1[] = { 16,2,77,29,3,33,43,2 };vector<int> v1(a1, a1 + sizeof(a)/sizeof(int));//删除其中的3vector<int>::iterator pos=find(v1.begin(),v1.end(),3);if(pos != v1.end()){v1.erase(pos);}return 0;
}
2.3vector 空间增长问题
容量空间 | 接口说明 |
size | 获取数据个数 |
capacity | 获取容量大小 |
empty | 判断是否为空 |
resize | 改变 vector 的 size |
reserve | 改变 vector 的 capacity |
void TestVector3()
{v1.reserve(10);for (size_t i = 0; i < 10; i++){v1[i] = i;}//上述的代码是典型的错误,以为预留好了空间就可以直接访问,这是错误的。//reserve预留空间的目的是为了减少扩容,并不会修改size,上面相等于越界访问。//正确应该是这样写v1.reserve(10);for (size_t i = 0; i < 10; i++){v1.push_back(i);}//或者v1.resize(10);for (size_t i = 0; i < 10; i++){v1[i] = i;}}
2.4vector的增删查改
vector 增删查改 | 接口说明 |
push_back | 尾插。 |
pop_back | 尾删。 |
find | 查找。(注意这个是算法模块实现,不是 vector 的成员接口) |
insert | 在 position 之前插入 val。 |
erase | 删除 position 位置的数据。 |
swap | 交换两个 vector 的数据空间。(vector的成员函数中有swap) |
operator[] | 像数组一样访问 |
void test_vector5()
{int a[] = { 16,2,77,29,3,33,43,3,2,3,3,2 };vector<int> v1(a, a + sizeof(a)/sizeof(int));for (auto e : v1){cout << e << " ";}cout << endl;// 头删v1.erase(v1.begin());for (auto e : v1){cout << e << " ";}cout << endl;// 头插 v1.insert(v1.begin(), 100);for (auto e : v1){cout << e << " ";}cout << endl;// 删除第3个数据v1.erase(v1.begin()+2);for (auto e : v1){cout << e << " ";}cout << endl;// 删除3,但是不知道3在哪个位置,怎么办?//vector<int>::iterator pos = find(v1.begin(), v1.end(), 3);auto pos = find(v1.begin(), v1.end(), 3);/*if (pos != v1.end()){v1.erase(pos);}*/// 删除所有的3 -- 涉及迭代器失效!while(pos != v1.end()){v1.erase(pos);//pos = find(pos+1, v1.end(), 3); 这是错的,迭代器会失效pos = find(v1.begin(), v1.end(), 3);}for (auto e : v1){cout << e << " ";}cout << endl;//assign(size_type count, const T& value)//将 vector 中的元素替换为 count 个值为 value 的元素。v1.assign(10, 1);for (auto e : v1){cout << e << " ";}cout << endl;
}
相关文章:
C++ vector 介绍与使用
目录 1.vector是什么? 2.vector的使用 2.1vector的构造函数 2.2vector iterator 的使用 2.3vector 空间增长问题 2.4vector的增删查改 1.vector是什么? 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也 采用连续的存储…...
可以下载blender/fbx格式模型网站
glbxz.com glbxz.com可以下载blender/fbx格式模型。当然里面有免费的...
Vi/Vim 编辑器详细指南
Vi/Vim 编辑器详细指南 简介一、模式详解1. 命令模式(Normal Mode)2. 插入模式(Insert Mode)3. 可视模式(Visual Mode)4. 命令行模式(Ex Mode)二、核心操作1. 保存与退出2. 导航与移动3. 编辑与文本操作4. 搜索与替换三、高级技巧1. 多文件与窗口操作2. 宏录制3. 寄存器…...
LeetCode 热题 100 22. 括号生成
LeetCode 热题 100 | 22. 括号生成 大家好,今天我们来解决一道经典的算法题——括号生成。这道题在 LeetCode 上被标记为中等难度,要求生成所有可能的并且有效的括号组合。这是一道非常经典的回溯法题目,非常适合用来练习递归和回溯的技巧。…...
UE5 MetaHuman眼睛变黑
第5个材质MI_EyeOcclusion_Inst修改成透明即可...
【C语言】--指针超详解(一)
目录 一.内存和地址 1.1--内存 1.2--如何理解编址 二.指针变量和地址 2.1--取地址操作符(&) 2.2--指针变量和解引用操作符(*) 2.2.1--指针变量 2.2.2--如何理解指针类型 2.2.3--解引用操作符 2.3--指针变量的大小 三.指针变量类型的意义 3.1--从指针的解引用方…...
高频工业RFID读写器-三格电子
高频工业RFID读写器 型号:SG-HF40-485、SG-HF40-TCP 产品功能 高频工业读写器(RFID)产品用在自动化生产线,自动化分拣系统,零部件组装产线等情境下,在自动化节点的工位上部署RFID读写设备,通过与制品的交互…...
驱动开发系列57 - Linux Graphics QXL显卡驱动代码分析(四)显示区域绘制
一:概述 前面在介绍了显示模式设置(分辨率,刷新率)之后,本文继续分析下,显示区域的绘制,详细看看虚拟机的画面是如何由QXL显卡绘制出来的。 二:相关数据结构介绍 struct qxl_moni…...
6.5 行业特定应用:金融、医疗、制造等行业的定制化解决方案
金融、医疗和制造行业作为全球经济支柱,面临数据复杂性、实时性需求和严格合规性的共同挑战,同时各行业因业务特性衍生出独特需求。金融行业需应对市场波动、欺诈风险和多国法规,医疗行业聚焦精准诊断和患者数据隐私,制造业则强调…...
【Linux我做主】深入探讨从冯诺依曼体系到进程
从冯诺依曼体系到进程 从冯诺依曼体系到进程github地址1. 前言2. 计算机硬件2.1 冯诺依曼体系结构2.2 冯诺依曼模型的三大要点2.3 从QQ聊天认识:冯诺依曼体系下数据是如何流动的?发送方数据流动接收方数据流动 3. 计算机软件的根基——操作系统3.1 操作系…...
idea更换jdk版本操作
有时候我们有更换jdk版本的问题,自己电脑可能有多个版本,下面来介绍修改jdk版本修改修改什么地方 1 2 3 4 5 6 再修改pom即可,还有环境变量即可,希望有帮到大家!...
npm install下载插件无法更新package.json和package-lock.json文件的解决办法
经过多番查证,使用npm config ls查看相关配置等方式,最后发现全局的.npmrc文件的配置多写了globaltrue,去掉就好了 如果参数很多,不知道是哪个参数引起的,先只保留registryhttp://xxx/,试试下载࿰…...
机器学习实操 第二部分 神经网路和深度学习 第13章 使用TensorFlow加载和预处理数据
机器学习实操 第二部分 神经网路和深度学习 第13章 使用TensorFlow加载和预处理数据 内容概要 第13章深入探讨了如何使用TensorFlow加载和预处理数据。本章首先介绍了tf.data API,它能够高效地加载和预处理大规模数据集,支持并行文件读取、数据打乱、批…...
WebSoket的简单使用
一、WebSocket简介 1.1、双向通信/全双工 客户端和服务器之间同时双向传输,全双工通信允许客户端和服务器随时互相发送消息,不需等一方发送请求后另一方才进行响应。 适用要低延迟/实时交互的场景,如在线游戏、即时通讯、股票行情等。 1.2…...
01_线性表
一、线性表的顺序存储 逻辑上相邻的数据元素,物理次序也相邻。占用连续存储空间,用“数组”实现,知道初始位置就可推出其他位置。 00_宏定义 // 函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #defin…...
STL详解 - map和set
目录 一、关联式容器概述 二、键值对 三、树形结构的关联式容器 (一)set 1. set的介绍 2. set的使用 (1)模板参数列表 (2)构造函数 (3)迭代器函数 (4ÿ…...
SpringBoot 集成滑块验证码AJ-Captcha行为验证码 Redis分布式 接口限流 防爬虫
介绍 滑块验证码比传统的字符验证码更加直观和用户友好,能够很好防止爬虫获取数据。 AJ-Captcha行为验证码,包含滑动拼图、文字点选两种方式,UI支持弹出和嵌入两种方式。后端提供Java实现,前端提供了php、angular、html、vue、u…...
高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化
一、虚拟机环境下的部署演进 1. 低并发场景(QPS<10)的简单模式 # 典型部署脚本示例 ssh userproduction "cd /var/www && git pull origin master" 技术痛点: 文件替换期间导致Nginx返回502错误(统计显示…...
vue引入物理引擎matter.js
vue引入物理引擎matter.js 在 Vue 项目中集成 Matter.js 物理引擎的步骤如下: 1. 安装 Matter.js npm install matter-js # 或 yarn add matter-js2. 创建 Vue 组件 <template><div ref="physicsContainer" class="physics-container"><…...
【实战项目】简易版的 QQ 音乐:一
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:能自我实现简易版的 QQ 音乐。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自:…...
部署Superset BI(三)连接HANA数据库
metabase和redash都不支持HANA数据库,选择superset就是看重这一点,开始尝试连接HANA数据库。 按Superset的技术文档:pip install hdbcli sqlalchemy-hana or pip install apache-superset[hana] --进入容器 rootNocobase:/usr/superset/supe…...
快速学会Linux的WEB服务
一.用户常用关于WEB的信息 什么是WWW www是world wide web的缩写,及万维网,也就是全球信息广播的意思 通常说的上网就是使用www来查询用户所需要的信息。 www可以结合文字、图形、影像以及声音等多媒体,超链接的方式将信息以Internet传递到世…...
如何搭建spark yarn模式集群的集群
以下是搭建 Spark YARN 模式集群的一般步骤: 准备工作 确保集群中各节点已安装并配置好 Java 环境,且版本符合 Spark 要求。规划好集群中节点的角色,如 Master 节点、Worker 节点等,并确保各节点之间网络畅通,能相互…...
端口安全基本配置
1.top图 2.交换机配置 交换机swa <SWA> system-view [SWA] vlan batch 10 20[SWA] interface GigabitEthernet0/0/1 [SWA-GigabitEthernet0/0/1] port link-type trunk [SWA-GigabitEthernet0/0/1] port trunk allow-pass vlan 10[SWA] interface GigabitEthernet0/0/2 …...
【JsonCpp、Muduo、C++11】JsonCpp库、Muduo库、C++11异步操作
JsonCpp库、Muduo库、C11异步操作 1. JsonCpp库1.1 Json数据格式1.2 JsonCpp介绍1.3 JsonCpp使用 2. Muduo库2.1 Muduo库常见接口介绍2.1.1 TcpServer类基础介绍2.1.2 EventLoop类基础介绍2.1.3 TcpConnection类基础介绍2.1.4 Buffer类基础介绍2.1.5 TcpClient类基础介绍 2.2 M…...
【自然语言处理与大模型】LlamaIndex的词嵌入模型和向量数据库
(1)嵌入模型的定义和作用 嵌入模型(Embedding Model)的本质在于将高维的、稀疏的数据转换为低维的、密集的向量表示,使得这些向量能够在数学空间中表达原始数据的语义信息。作用如下: 降维表示:…...
SLAM算法工程师面经大全:2025年面试真题解析与实战指南
SLAM算法工程师面经大全:2025年面试真题解析与实战指南 一、SLAM技术概述与核心原理 1.SLAM基础理论框架 SLAM算法的核心在于同步定位与建图,这一过程涉及传感器数据融合、运动建模与优化方法。在传感器数据融合方面,不同类型的…...
虚拟现实视频播放器 2.6.1 | 支持多种VR格式,提供沉浸式观看体验的媒体播放器
虚拟现实媒体播放器是一款专为在智能手机上播放VR(虚拟现实)照片和视频而设计的应用程序。它支持多种格式的影像内容,包括360和180等距矩形柱面、标准镜头和鱼眼镜头拍摄的照片和视频,并且兼容3D立体并排、上/下以及收缩媒体格式。…...
从黔西游船侧翻事件看极端天气预警的科技防线——疾风气象大模型如何实现精准防御?
近日,贵州省黔西市一起载人游船侧翻事故令人痛心。调查显示,事发时当地突遇强风暴雨,水面突发巨浪导致船只失控。这一事件再次凸显:在极端天气频发的时代,传统“经验式防灾”已不足够,唯有依靠智能化的气象预警技术,才能筑牢安全底线。 极端天气预警的痛点:为什么传统方…...
颠覆监测体验!WM102无线温湿度记录仪开启智能物联新时代
当温湿度失控成为企业隐形成本杀手,您是否还在用传统设备疲于应对?一款集智能、精准、全能于一身的神器横空出世——WM102无线温湿度记录仪,用硬核科技重新定义环境监测! ▌5大场景痛点 一招破解 无论是医药冷库里的疫苗守护战&am…...
Linux云服务器配置git开发环境
文章目录 1. 安装 git2. git clone3. git add .4. git commit -m 提交记录5. git push🍑 异常原因🍑 解决办法 6. git pull7. git log8. git rm9. git mv10. git status 1. 安装 git sudo yum install git -y2. git clone 此命令的作用是从远程仓库把代…...
山东大学软件学院项目实训-基于大模型的模拟面试系统-个人主页头像上传
采用图床的方案,存储用户头像。 实现步骤 引入OSS依赖 在我们的SpringBoot项目中引入OSS依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version> &l…...
AI智能体|扣子(Coze)实战【天气查询插件开发教程】
大家好,我是偶然,AI洞察,AI智能体,AI实战案例分享 今天教大家用 Coze 开发一个天气插件,本来我是想教大家怎么用 AI 写代码节点实现节点功能的,但是我感觉太复杂了。 起码来说,我还没做到用特别…...
VBA ListBox/ComboBox 响应鼠标滚轮操作
一般情况下,在Excel的vba窗口中,我们是无法使用鼠标滚轮控制例如 ListBox 和 ComboBox 控件的。我们只能通过鼠标点击的方式来逐个选择选项。 我们都知道,通过鼠标滚轮快速的上下滚动候选项,以快速的定位选择选项,这是…...
Linux 更改内存交换 swap 为 zram 压缩,减小磁盘写入
1、查看当前 swap 的方式 swapon --show 我这里是默认的 swap 文件,大小为 2G。 2、安装 zram Ubuntu 下: sudo apt install zram-tools安装后默认会启动: 3、关闭默认的 swap 文件 sudo swapoff /swapfile 其次是关闭 /etc/fstab 中的 …...
TypeScript简介
🌟 TypeScript入门 TypeScript 是 JavaScript 的超集,由微软开发并维护,通过静态类型检查和现代语言特性,让大型应用开发变得更加可靠和高效。 // 一个简单的 TypeScript 示例 interface User {name: string;age: number;greet():…...
Facebook如何运用AI实现元宇宙的无限可能?
引言 元宇宙(Metaverse)是一个虚拟的、由多个 3D 虚拟世界组成的网络,用户可以在其中进行互动、游戏、工作和社交。Facebook 作为全球最大的社交媒体平台之一,对元宇宙的构建和实现有着深远的影响。通过运用人工智能(…...
【大语言模型ChatGPT+Python】近红外光谱数据分析及机器学习与深度学习建模(近红外光谱数据分析、定性/定量分析模型代码自动生成等)
近红外光谱数据分析是一种重要的分析技术,广泛应用于化学、食品、制药、农业、环境科学等领域。以下是关于近红外光谱数据分析的详细介绍: 一、基本原理 近红外光谱的范围 近红外光谱是指波长范围在780 - 2500纳米的电磁辐射。在这个波段,分子…...
ArcGIS Pro图斑属性自动联动更新-在线卫星底图图斑采集
今天介绍一下在ArcGIS Pro图斑属性自动联动更新 主要介绍内容: 1、ArcGIS Pro数据设计中属性规则的设置,实现图斑属性的自动更新与联动更新。 2、介绍ArcGIS Pro不能新建要素类图层的原因 3、包括新建字段等内容 4、deepseek查询arcade计算图斑面积语…...
OpenHarmony GPIO应用开发-LED
学习于: https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/driver/driver-platform-gpio-develop.md https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/driver/driver-platform-gpio-des.md 通过OpenHarmony官方文档指导可获知:芯片厂…...
C语言结构体内存对齐使用场景
#pragma pack(push, 1) 和 #pragma pack(pop) 的使用场景(C语言) 这两个预处理指令用于控制结构体成员的内存对齐方式,主要在以下场景中使用: 主要使用场景 网络通信协议处理 当需要精确控制结构体布局以匹配网络协议格式时 确…...
极速轻量,Rust 网络开发新选择:Hyperlane 框架深度解析
极速轻量,Rust 网络开发新选择:Hyperlane 框架深度解析 在高性能网络服务开发领域,Rust 凭借其内存安全与高效并发的特性备受青睐。今天,我们迎来一款专为现代 Web 服务打造的明星框架——Hyperlane,它以“轻量高效、…...
从零开始学习人工智能(Python高级教程)Day6-Python3 正则表达式
一、Python3 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 在 Python 中,使用 re 模块来处理正则表达式。 re 模块提供了一组函数,允许你在字符串中进行模式匹配、搜索和替换操作。 r…...
UKCC(原OUCC)真题讲解(一)
题目链接:PRACTICE - 2025 Coding Challenge - UK Bebras 1.GreenStar 方法:使用模块 参考答案: 【知识点】 这里的长度100,是指中心到角的距离。 2.Draw a Square 参考答案: 【知识点】 在正多边形的图案中&#…...
Linux——特殊权限管理
Linux中的特殊权限(setuid、setgid、sticky bit)扩展了基本的文件权限机制,提供了更精细的控制。以下是详细说明: 1. SetUID(SUID) 作用:允许用户以文件所有者的权限执行文件。 例如:…...
Ubuntu18.04搭建samda服务器
一.什么是Samba服务器? Samba服务器是一种基于开源协议实现的网络共享服务软件,主要用于在不同操作系统(如Windows、Linux、Unix)之间实现文件和打印机共享功能。其核心目标是解决跨平台资源共享的兼容性问题,尤其是在…...
vue3搭建后台管理系统
找menu菜单 上部用height设置高度和背景颜色 需要自己改左侧栏的边线 将el-menu的border设置为0,然后上方设置border-right设置边框 设置右边 创建data.vue input组件 导入icon图标 引入import 一个template 设置个card el-card 定义card 加el-button查询 el-table表单 …...
[学习]RTKLib详解:pntpos.c与postpos.c
文章目录 RTKLib详解:pntpos.c与postpos.cPart A: pntpos.c一、概述二、整体工作流程三、主要函数说明1. pntpos()2. satposs()3. estpos()4. rescode()5. prange()6. ionocorr()7. tropcorr()8. valsol()9. raim_fde()10. estvel() 四、函数调用关系图(…...
64.微服务保姆教程 (七) RocketMQ--分布式消息中间件
RocketMQ–分布式消息中间件 一、MQ 1、什么是MQ MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队…...
邀约媒体,邀请到场 多少钱?
传媒如春雨,润物细无声,大家好,我是51媒体胡老师。 在策划线下活动时,媒体邀约是提升品牌曝光度和影响力的重要环节。不同类型和规模的媒体邀约,其预算需求也各不相同。以下为各类媒体邀约的费用概览及影响因素&#…...