news 2026/4/3 3:14:43

STL专项:vector 变长数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STL专项:vector 变长数组

以下内容为学习过程中所记录的笔记

推荐引入万能头文件

#include<bits/stdc++.h> //万能头文件 / 预编译头文件,它的本质是包含了 C++ 标准库中几乎所有常用的头文件(比如输入输出、字符串、容器、算法、数学函数等)

using namespace std; //使用std命名空间,在代码中可以直接使用标准库中的标识符

(如函数、类、变量等),无需额外添加 std:: 前缀

vector

vector是变长数组,支持随机访问,不支持在任意位置O(1)插入。为了保证效率,元素的增删一般应该在末尾进行。

创建vector

vector<int> v;//创建一个空的 vector,元素类型为 int

vector<int> v1(10);//创建一个含有10个元素的 vector,所有元素默认初始化为0

vector<int> v2(10,42);//创建一个含有10个元素的 vector,所有元素初始化为42

vector<int> v3 = {1,2,3,4,5};//使用列表初始化创建一个 vector (通过大括号{}直接列出初始化元素,称为 “列表初始化”)

vector<int> a[233];//相当于第一维长233,第二维长度变化的 int 数组

struct rec{...};

vector<rec> c;//自定义的结构体类型也可以保存在 vector 中

访问元素

int x = v[0];//访问第一个元素

int y = v.at(1);//使用 at() 函数访问第二个元素,at() 会进行边界检查(若超出边界,则会抛出异常)

修改元素

v[0] = 10;//修改第一个元素,O(1)

v.push_back(20);//在 vector 末尾添加一个元素,O(1)

v.pop_back();//删除末尾元素,O(1),请注意保证 vector 非空

遍历vector

//下标遍历

//注意 v.size() 返回值为 unsigned int 类型,不要进行 -1 操作,否则可能会得到一个非常大的数,因为是用补码表示的。

//不要使用 i <= v.size() - 1

for(int i=0;i<v.size();i++){

cout<<v[i]<<' ';

}

cout<<endl;

//使用范围for循环

//elem 是从 v 中取出来的值

//优点:方便,缺点:丢失下标信息

for(int elem:v){

cout<<elem<<' ';

}

cout<<endl;

//如果 vector 存储的是 pair 类型或者结构体,c++17版本以上可使用结构化绑定来枚举

//&表示引用枚举,不加&则是拷贝枚举

vector<pair<int,int>> v_pair;

for(const auto &[x,y] : v_pair){

cout<<x<<' '<<y<<'\n';

}

查询vector大小

int size = v.size();//返回vector中元素的个数

判空

if(v.empty())//如果是空,则 v.empty() 会返回一个true,否则返回false

if(v.size())//如果非空,则 v.size() 返回1,为空返回0

清空vector

v.clear();//移除所有元素,size 变为0,O(n)

练习题

斐波那契数列 | 星码StarryCoding 算法竞赛新手村

代码答案

#include<bits/stdc++.h> using namespace std; using ll = long long; int main(){ int n;cin>>n; vector<ll> v; v.push_back(1),v.push_back(1); for(int i=3;i<=n;i++){ v.push_back(*v.rbegin()+*(++v.rbegin())); } cout<<v.back()<<endl; return 0; }

悄咪咪:今天是主播生日哦,哈哈路过的宝子给主播发句生日祝福,感谢么么哒

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 4:27:25

TCN-BiGRU回归+特征贡献SHAP分析+新数据预测+多输出,MATLAB代码

一、研究背景 该模型结合了时序卷积网络&#xff08;TCN&#xff09; 与双向门控循环单元&#xff08;BiGRU&#xff09;&#xff0c;适用于处理具有时序依赖性或序列结构的多输入多输出回归问题。TCN 能捕捉长期依赖与局部特征&#xff0c;BiGRU 能学习序列的双向上下文信息。…

作者头像 李华
网站建设 2026/3/27 15:01:14

YOLO与Knative无服务器集成:实现事件驱动的推理

YOLO与Knative无服务器集成&#xff1a;实现事件驱动的推理 在智能制造车间&#xff0c;上百台工业相机每分钟上传数千张图像进行缺陷检测&#xff1b;在城市交通监控中心&#xff0c;成千上万路视频流需要实时分析异常行为。这些场景共同面临一个挑战&#xff1a;如何以最低成…

作者头像 李华
网站建设 2026/3/28 9:33:49

Abaqus复合材料微观单胞RVE模型的周期性网格划分及E11,E22,E33,G12,G13...

abaqus复合材料微观单胞RVE模型&#xff08;三种材料&#xff09;的周期性网格划分&#xff0c;并计算E11,E22,E33,G12,G13和G23等效弹性模量和剪切模量。 刚折腾完Abaqus复合材料RVE建模&#xff0c;必须把踩过的坑给大家盘一盘。这次搞的是包含基体、纤维、界面相的三相材料单…

作者头像 李华
网站建设 2026/4/1 13:46:32

python:global用法体会

# 定义全局变量 # session "初始全局值" session Nonedef no_global_demo():# 未声明 global&#xff0c;此处是创建局部变量 session&#xff0c;而非修改全局变量# session "局部变量值"print("局部作用域内&#xff08;无global&#xff09;&am…

作者头像 李华
网站建设 2026/4/1 16:08:10

使用 webdriver-manager配置geckodriver

使用 webdriver-manager 来自动管理 geckodriver&#xff08;无需手动下载、配置环境变量&#xff09;&#xff0c;这是 Selenium 自动化中更高效、更省心的方案&#xff0c;我会为你提供完整的配置步骤、代码示例和核心注意事项。一、前置准备&#xff1a;安装必要依赖首先需要…

作者头像 李华
网站建设 2026/3/19 5:17:08

YOLO与Kiali服务拓扑可视化集成:直观查看调用关系

YOLO与Kiali服务拓扑可视化集成&#xff1a;直观查看调用关系 在智能制造工厂的视觉质检线上&#xff0c;一台边缘设备正通过摄像头实时捕捉传送带上的产品图像。YOLO模型在0.1秒内完成缺陷检测并返回结果——这看似流畅的过程背后&#xff0c;却隐藏着一个运维难题&#xff1a…

作者头像 李华