C++—>STL中vector使用篇

文章目录
- 🚩前言
- 1、vector容器的概述
- 2、vector构造函数的使用
- 3、vector遍历方式
- 4、vector中Capacity相关接口
- 5、vector插入和删除的使用
🚩前言
前面描述了字符串string的相关知识,接下来描述第二个常用容器——vector,即顺序表。👇👇
1、vector容器的概述
- 简单来说,vector相当于C++中的数组,数组中可以用的操作,在vector中都有相应的接口,并且具有数组没有的功能,基于数组的数据结构实现自动管理内存的,方便灵活的序列容器。
2、vector构造函数的使用
首先了解vector可以支持的构造函数有哪些?下面是所具有的构造函数:
//构造函数的使用
void Test_vector_1()
{//构造一个空的容器vector<int> v1;//构造n个值为val的容器vector<int> v2(8,6);//使用迭代器构造一个容器,可以改变范围大小vector<int> v3(++v2.begin(), --v2.end());
}
调试结果

3、vector遍历方式
在vector中和string遍历方式一样的,都包括下标访问、迭代器以及范围for访问,接下来使用一下这些访问方式:
//遍历方式的使用
void Test_vector_2()
{//创建一个大小为10,值为6的容器vector<int> v1(10,6);//下标访问for (int i = 0; i < v1.size(); i++){cout << v1[i] << " ";}cout << endl;//迭代器vector<int>::iterator it = v1.begin();while (it != v1.end()){cout << *it << " ";++it;}cout << endl;//范围for遍历for (auto n : v1){cout << n << " ";}cout << endl;
}

4、vector中Capacity相关接口

通过reserve接口来了解:
//Capacity相关接口
void Test_vector_3()
{vector<int> v1(10,1);//先看原始空间大小cout <<"_size:"<< v1.size() << endl;cout << "_capacity:"<<v1.capacity() << endl;//申请更大空间v1.reserve(30);cout << "预留大于空间的,空间变大:" << endl;cout <<"_size:"<< v1.size() << endl;cout << "_capacity:"<<v1.capacity() << endl;cout << "预留比空间小的,空间不会缩容的:" << endl;v1.reserve(20);cout << "_size:" << v1.size() << endl;cout << "_capacity:" << v1.capacity() << endl;
}

resize()接口的作用
主要有两种:①resize的个数小于原本数据个数的时候,就相当于删除后面的数据内容,在vs上空间不会缩容(缩容和不缩容得看编译器平台);②若大于原本数据个数的时候,就是插入,当空间不够的时候就会扩容;
//resize()
void Test_vector_3()
{ vector<int> v1(10, 1);//先看原始空间大小cout << "_size:" << v1.size() << endl;cout << "_capacity:" << v1.capacity() << endl;for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "大于原有数据个数的时候,超过原有空间大小:" << endl;v1.resize(15,2);cout << "_size:" << v1.size() << endl;cout << "_capacity:" << v1.capacity() << endl;for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "小于原有数据个数的时候,不会缩容:" << endl;v1.resize(5);cout << "_size:" << v1.size() << endl;cout << "_capacity:" << v1.capacity() << endl;for (auto n : v1){cout << n << " ";}cout << endl << endl;
}

5、vector插入和删除的使用
插入接口主要是:push_back()和insert(),删除就是:erase();
//插入和删除
void Test_vector_4()
{vector<int> v1;cout << "size:" << v1.size() << endl;cout << "capacity:" << v1.capacity() << endl;cout << endl;//尾插v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);v1.push_back(5);v1.push_back(6);v1.push_back(7);v1.push_back(8);v1.push_back(9);v1.push_back(10);v1.push_back(11);cout << "尾插:" << endl;for (auto n : v1){cout << n << " ";}cout << endl;cout << "size:" << v1.size() << endl;cout << "capacity:" << v1.capacity() << endl;cout << endl;//固定插入cout << "首部插入:" << endl;v1.insert(v1.begin(),10);for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "中间位置插入:" << endl;v1.insert(v1.begin()+4, 666);for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "erase支持某一位置删除和区间删除:" << endl;cout << "删除第一个元素:"<<endl;v1.erase(v1.begin());for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "删除最后一个元素:" << endl;v1.erase(v1.end()-1);v1.erase(v1.begin());for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "区间删除:" << endl;v1.erase(v1.begin()+3,v1.begin()+5);for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "清空接口,不改变空间:clear()" << endl;v1.clear();cout <<"size:"<< v1.size() << endl;cout << "capacity:"<<v1.capacity() << endl;cout << endl;
}

常用常用接口就描述到此,不常见的可以通过下面链接了解:
vector容器官方文档介绍
相关文章:
C++—>STL中vector使用篇
文章目录 🚩前言1、vector容器的概述2、vector构造函数的使用3、vector遍历方式4、vector中Capacity相关接口5、vector插入和删除的使用 🚩前言 前面描述了字符串string的相关知识,接下来描述第二个常用容器——vector,即顺序表。…...
pyinstaller打包vnpy项目
因为我写的软件主要是自己用,很少有打包的习惯,直接源代码部署,导致打包,以下记录一下给一个朋友做的,对vnpy的改写,实现实时读取信号文件,发现文件中信号改变就做出相应的交易动作,…...
kafka 消费组 分区分配策略
一、前提 kafka的版本是 2.6.2 一般我们消费kafka的时候是指定消费组,是不会指定消费组内部消费kafka各个分区的分配策略,但是我们也可以指定消费策略,通过源码发现,我们可以有三种分区策略: RangeAssignor (默认&am…...
AQS原理解析
1. 什么是AQS AQS的全称是AbstractQueuedSynchronizer,即抽象队列同步器,这个类在java.uitl.concurrent.locks包下面。 AQS就是一个抽象类,主要用来构建锁和同步器。 public abstract class AbstractQueuedSynchronizer extends AbstractOw…...
『 Linux 』利用UDP套接字实现简单群聊
文章目录 服务端通过传入命令处理实现远程命令执行使用Windows编辑UDP客户端实现Windows远程控制Linux接收套接字的其他信息UDP套接字简单群聊服务端UDP套接字简单群聊客户端运行测试及分离输入输出 参考代码 服务端通过传入命令处理实现远程命令执行 『 Linux 』利用UDP套接字…...
【数据结构与算法 | 图篇】最小生成树之Kruskal(克鲁斯卡尔)算法
1. 前言 克鲁斯卡尔算法(Kruskals algorithm)是一种用于寻找加权图的最小生成树(Minimum Spanning Tree, MST)的经典算法。这种算法是由约瑟夫克鲁斯卡尔(Joseph Kruskal)提出的,并且适用于所有…...
了解常用的代码检查工具
在软件开发领域,代码检查工具是确保代码质量、提高开发效率、促进团队协作的重要工具。这些工具通过自动化分析代码,帮助开发者发现潜在的错误、漏洞、代码异味等问题,并提供修复建议或重构方案。以下是一些常用的代码检查工具,它…...
BUUCTF PWN wp--warmup_csaw_2016
第一步 先checksec一下(没有启用NX保护、PIE、完整的RELRO和栈保护,还有具有RWX权限的内存段。) 分析一下这个文件的保护机制: Arch: amd64-64-little 这表示该可执行文件是为64位的AMD64架构编译的,并且使用的是小…...
dockerfile搭建部署LNMP
目录 实验 架构: 实验步骤: nginx部分 mysql部分 php部分 实验 实验:用dockerfile搭建LNMP论坛 架构: 一台docker虚拟机 docker部署nginx 1.22 指定ip地址172.111.0.10 docker部署mysql 8.0.30 指定ip地址…...
Rust : 数据分析利器polars用法
Polars虽牛刀小试,就显博大精深,在数据分析上,未来有重要一席。 下面主要列举一些常见用法。 一、toml 需要说明的是,在Rust中,不少的功能都需要对应features引入设置,这些需要特别注意,否则编译…...
Qt第一课
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...
论“graphics.h”库,easyx
前言 别人十步我则百,别人百步我则千 你是否有这样的想法,把图片到入进c里,亦或者能实时根据你发出的信息而做出回应的程序,graphics.h这个库完美满足了你的需求,那今天作者就给大家介绍一下这个库,并做一些…...
如何在寂静中用电脑找回失踪的手机?远程控制了解一下
经过一番努力,我终于成功地将孩子哄睡了。夜深人静,好不容易有了一点自己的时间,就想刷手机放松放松,顺便看看有没有重要信息。但刚才专心哄孩子去了,一时就忘记哄孩子之前,顺手把手机放哪里去了。 但找过手…...
Android 实现动态换行显示的 TextView 列表
在开发 Android 应用程序时,我们经常需要在标题栏中显示多个 TextView,而这些 TextView 的内容长度可能不一致。如果一行内容过长,我们希望它们能自动换行;如果一行占不满屏幕宽度,则保持在一行内。本文将带我们一步步…...
Golang | Leetcode Golang题解之第352题将数据流变为多个不相交区间
题目: 题解: type SummaryRanges struct {*redblacktree.Tree }func Constructor() SummaryRanges {return SummaryRanges{redblacktree.NewWithIntComparator()} }func (ranges *SummaryRanges) AddNum(val int) {// 找到 l0 最大的且满足 l0 < val…...
Ubuntu安装mysql 以及远程连接mysql Windows—适合初学者的讲解(详细)
目录 准备工作 一.Xshell中操作 (1)在虚拟机中安装mysql (2)连接Windows数据库 (3)进入linux数据库。 (4)修改mysql配置文件 二.Windows命令窗口操作 需要软件虚拟机,Xsh…...
【数学建模】MATLAB快速入门
文章目录 1. MATLAB界面与基本操作1.1 MATLAB的基本操作 2. MATLAB字符串和文本2.1 string变量2.2 char变量 3. MATLAB的矩阵运算 1. MATLAB界面与基本操作 初始界面: 刚开始的界面只要一个命令行窗口,为了使编辑界面出现我们需要新建一个文件ÿ…...
【ubuntu24.04】k8s 部署5:配置calico 镜像拉取
kubeadm - 中国大陆版建议:初始化Kubeadm –apiserver-advertise-address 这个地址是本地用于和其他节点通信的IP地址 –pod-network-cidr pod network 地址空间 sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --apiserver-advertise-add…...
Elasticsearch 的数据备份与恢复
在生产环境中,数据的安全性和可靠性至关重要。对于基于 Elasticsearch 的系统而言,数据备份与恢复是确保数据完整性、应对灾难恢复的关键操作。本文将详细介绍 Elasticsearch 中如何进行数据备份与恢复,帮助管理员构建一个可靠的数据保护策略…...
Ps:首选项 - 暂存盘
Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K Photoshop 首选项中的“暂存盘” Scratch Disks选项卡通过合理配置和管理暂存盘,可以显著提高 Photoshop 的运行性能,特别是在处理复杂的设计项目或大型图像文件时。选择合适…...
Phi-4-mini-reasoning企业级落地:金融风控规则推理引擎构建案例
Phi-4-mini-reasoning企业级落地:金融风控规则推理引擎构建案例 1. 项目背景与模型介绍 在金融风控领域,规则推理引擎是核心决策系统的重要组成部分。传统规则引擎往往面临维护成本高、灵活性差、难以应对复杂场景等问题。Phi-4-mini-reasoning作为一款…...
3个核心功能让视频创作者轻松提取硬字幕
3个核心功能让视频创作者轻松提取硬字幕 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取。A GUI tool for ex…...
Realistic Vision V5.1 提示词工程入门:C语言基础思维在Prompt编写中的应用
Realistic Vision V5.1 提示词工程入门:C语言基础思维在Prompt编写中的应用 如果你有C语言的编程经验,现在想玩转AI图像生成,特别是像Realistic Vision V5.1这样的写实风格模型,那这篇文章就是为你准备的。很多人觉得写提示词&am…...
四管升降压电路实战解析:从拓扑原理到模式切换(附波形对比)
1. 四管升降压电路为何成为工程师的"瑞士军刀" 第一次接触四管升降压电路时,我正被一个光伏储能项目折磨得焦头烂额。太阳能板的输出电压在8V-18V剧烈波动,而系统需要稳定的12V供电。传统方案要用两个独立电路串联,直到老工程师扔给…...
GLM-4-9B-Chat-1M模型推理加速方案
GLM-4-9B-Chat-1M模型推理加速方案 1. 引言 如果你正在使用GLM-4-9B-Chat-1M这个支持百万级上下文的大模型,可能会发现推理速度有时候不太理想。特别是在处理长文本时,生成响应需要等待较长时间。这其实是很正常的现象,毕竟模型参数量达到9…...
使用seo站点管理系统需要注意哪些事项
SEO站点管理系统的核心注意事项 在当今数字化时代,SEO站点管理系统(Site Management System for SEO)是网站运营和推广的关键工具。它不仅能帮助提升网站在搜索引擎中的排名,还能带来更多的流量和转化。要真正利用这一工具&#x…...
告别硬件烧钱!用Proteus仿真Arduino UNO做智能小车传感器方案选型
告别硬件烧钱!用Proteus仿真Arduino UNO做智能小车传感器方案选型 在创客和电子竞赛领域,智能小车一直是热门项目,但高昂的硬件成本常常让爱好者望而却步。一套完整的智能车系统可能包含多个传感器、电机驱动模块和控制器,实体采购…...
你在关系里是不是“管太多“?免费控制欲测试,评估你的占有程度
你在关系里是不是"管太多"?免费控制欲测试,评估你的占有程度 引言 你是否总是想知道伴侣在哪里、和谁在一起?是否经常查看对方的手机或社交账号?是否对伴侣和异性接触特别敏感? 还是你常常因为对方的某些…...
如何从业务出发,设计一个可落地的智能客服 RAG 系统
一、核心原则以业务需求为锚点,而不是技术驱动很多 RAG 项目失败的根因:没搞清楚“解决谁的问题”一开始就堆模型、堆技术👉 正确做法:先拆需求,再设计系统二、三方核心需求拆解设计前必须明确三类角色目标:…...
别再只用Whisper了!WhisperX + Python 实战:如何为3分钟视频批量ASR搭建高效处理流水线
WhisperX Python 实战:构建高吞吐量语音识别流水线的工程实践 在音视频内容爆炸式增长的时代,语音识别技术已成为内容生产、知识管理、数字营销等领域的基础设施。当处理规模从单个文件扩展到数百小时的音视频素材时,传统单次处理模式显露出…...


