一文读懂C++ Vector在算法竞赛中的常见用法
一文读懂C++ Vector在算法竞赛中的常见用法
Vector相当于对数组的封装,提供了非常丰富的方法,在算法竞赛中能大大节省我们的时间。以下是我在刷题中会使用到的常见Vector用法。注释都写好了。
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v1; // 定义⼀个vector v1,定义的时候没有分配⼤⼩
cout<<v1.size()<<endl; // 输出 0, 定义时可以不分配大小,之后再用resize分配
v1.resize(10);
cout<<v1.size()<<endl;// 输出 10, 定义时可以不分配大小,之后再用resize分配, 默认元素都为0
for (int i = 0; i < v1.size(); i++) {
cout<< v1[i] << " ";
}
cout<<endl;
//以上循环输出为 0 0 0 0 0 0 0 0 0 0
int n = 5;
vector<int> v2(n); //定义n个大小的数组
for (int i = 0; i < v2.size(); i++) {
cout<< v2[i] << " ";
}
cout<<endl;
//以上循环输出为 0 0 0 0 0
// 在定义的时候就可以对vector变量进⾏初始化
vector<int> v3(n,9); //定义n个大小的数组,且所有数值都初始化为9
for (int i = 0; i < v3.size(); i++) {
cout<< v3[i] << " ";
}
cout<<endl;
//以上循环输出为 9 9 9 9 9
//对于vector的基本操作和数组差不多,但是多了很多方法
v3[0] = 88;
v3[3] = 77;
for (int i = 0; i < v3.size(); i++) {
cout<< v3[i] << " ";
}
cout<<endl;
//以上循环输出为 88 9 9 77 9
//push_back的使用
vector<int> v4; // 定义⼀个v4,定义的时候不需要分配⼤⼩
cout<<v4.size()<<endl; //输出为 0
for (int i = 0; i < 10; i++) {
v4.push_back(i); //在v4的末尾添加⼀个元素i
}
cout<<v4.size()<<endl; //输出为10 v4中的元素为0 1 2 3 4 5 6 7 8 9
//迭代器访问
for (auto it = v4.begin(); it!=v4.end(); it++) {
cout<< *it <<" ";
}
cout<<endl;
//以上循环输出为 0 1 2 3 4 5 6 7 8 9
//vector的其他操作,其实是封装了数据结构中线性表的增删查改等操作
v4.pop_back(); //相当于弹栈,删除最后一个元素 执行后v4中的值为:0 1 2 3 4 5 6 7 8
v4.pop_back();
v4.pop_back();
v4.pop_back();
cout<< *v4.begin() <<endl; //输出0
cout<< *v4.end() <<endl; //输出6
//插入之前v4的值为 0 1 2 3 4 5
auto i = v4.insert(v4.begin(),99); //在v4的begin的位置插入一个元素为99 返回插入元素的位置的迭代器
cout<< *i <<endl; //输出99 此时v4的值为 99 0 1 2 3 4 5
auto i2 = v4.erase(v4.begin()+1);//删除下标为1的值,并把删除的位置迭代器返回
cout<< *i2 <<endl; //输出1 此时v4的值为 99 1 2 3 4 5
//查和改直接使用【】就行就不再演示了
for (auto it = v4.begin(); it!=v4.end(); it++) {
cout<< *it <<" ";
}
cout<<endl;
//以上循环输出为 99 1 2 3 4 5
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?