新手创作中,欢迎在评论区指教~
如果该文章对你确有帮助,希望可以点个赞,让我元气满满~
持续更新中,点击关注不迷路~
话不多说,直接上代码!!!

1 初始化

1.1 一维

#include <vector> // 头文件
// 1.指定大小不带初值的初始化
vector<int> vec(9); // 大小为9,初始值不确定(对于int类型,一般默认为0)
// 2.直观的初始化
vector<int> vec{1,2,3,4,5,6,7,8};
// 3.批量初始化
int size=10;
vector<int> vec(size,1); // 容器vec大小为10,初始值为1
// 4.通过其他容器初始化
// 假设容器b为{1,2,3,4,5}
vector<int> vec(b); // 整个拷贝
vector<int> vec(b.begin()+n,b.begin()+m); // 局部拷贝,从b.begin()+n开始,赋值(m-n)个元素
// 5.通过数组初始化
// 注意不能直接拷贝整个数组!
int b[7]={6,5,4,3,2,1,0};
vector<int> vec(b+n,b+m); // 与上类似

1.2 二维

// vec大小为4,子数组大小为5 (4行5列)
// 指定了大小,默认值初始化为0,不要使用push_back()添加元素,采用vec[i][j]=num直接赋值
vector<vector<int>> vec(4,vector<int>(5));

2 常用方法

2.1 增

2.1.1 assign()

// 假设容器b为{4,3,2,1}
vec.assign(b.begin()+n,b.begin()+m); // 从b.begin()+n开始,拷贝(m-n)个元素
vec.assign(10,1); // 容器大小为10,初值为1

2.1.2 push_back()

// 假设容器vec为{4,3,2,1}
vec.push_back(0); // 像容器vec最后插入元素0,vec变成{4,3,2,1,0}

2.1.3 insert()

// 假设容器vec为{4,3,2,1}
vec.insert(vec.begin()+1,-9); // 在索引1的位置插入一个元素,其值为-9
// 容器vec变为{4,-9,3,2,1}//-----------------------------------------------------------------// 假设容器vec2为{4,3,2,1}
vec2.insert(vec2.begin()+1,2,5); // 在索引1的位置插入2个元素,其值为5
// 容器vec2变为{4,5,5,3,2,1}//-----------------------------------------------------------------// 假设容器vec3为{4,3,2,1},容器b为{6,7,8,9}
vec3.insert(vec3.begin()+1,b.begin()+1,b.begin()+3);
// 容器vec3变为{4,7,8,3,2,1}

2.2 删

2.2.1 pop_back()

// 假设容器vec为{4,3,2,1}
vec.pop_back(); // 删除vec的最后一个元素1

2.2.2 erase()

// 假设容器vec为{4,3,2,1}
vec.erase(vec.begin()+1); // 删除索引为1的元素,vec变为{4,2,1}//-------------------------------------------------------------------------// 假设容器vec2为{4,3,2,1}
vec2.erase(vec2.begin()+n,vec2.begin()+m); // 从第n个元素开始,删除(m-n)个元素

2.2.3 clear()

// 假设容器vec为{4,3,2,1}
vec.clear(); //清空vec中的所有元素

2.3 改

2.3.1 resize()

// 假设容器vec为{4,3,2,1}
vec.resize(10); // 将容器vec大小调至10,会补充元素,值随机(一般为0)
// 假设容器vec2为{4,3,2,1}
vec2.resize(3); // 将容器vec2大小调至3,会删除元素,值随机(一般从末尾删除)
// 假设容器vec3为{4,3,2,1}
vec3.resize(10,2); // 将容器vec3大小调至10,补充元素,值指定为2

2.3.2

// 假设容器vec为{4,3,2,1}
// 假设容器vec2为{5,6,7,8,9}
vec.swap(vec2); // vec变为{5,6,7,8,9},vec2变为{4,3,2,1}

2.3.3 reverse()

// 假设容器vec为{4,3,2,1}
reverse(vec.begin(),vec.end()); // vec变为{1,2,3,4}

2.4 查

2.4.1 find()

// 假设容器vec为{4,3,4,2,1,0}// 返回元素ele在vec中的第一个索引,ele为4时返回index=0
// 若未找到指定的元素,返回下标为vec.size()
int index=find(vec.begin(),vec.end(),ele)-vec.begin();// 返回元素ele在vec中的第一个索引(从右往左看,索引也是从右开始),ele为4时返回index=3
// 若未找到指定的元素,返回下标为vec.size()
int index2=find(vec.rbegin(),vec.rend(),ele)-vec.rbegin();

2.4.2 front()和back()

// 假设容器vec为{4,3,2,1}
vec.front(); //返回第一个元素4
vec.back(); // 返回最后一个元素1

2.4.3 empty()

// 假设容器vec为{4,3,2,1}
vec.empty(); //判断vec是否为空,空则返回true;不空则返回false

2.4.4 size()

// 假设容器vec为{4,3,2,1,0}
vec.size() // 返回容器大小,值为5

3 其他方法

3.1 排序

vector<int> vec{7,5,9,2,4,1};
sort(vec.begin(),vec.end()); // 正常升序排序
// vec是二维数组[[1,2],[4,6],[3,5]]
sort(vec.begin(),vec.end(),cmp); // 自定义排序,cmp是自定义函数
bool static cmp(vector<int>& a,vector<int>& b) { // 按子数组右区间升序排序return a[1]<b[1];
}

3.2 求和

vector<int> num{0,1,2,3};
accumulate(num.begin(),num.end(),0); // 6 (第三个参数是累加的初值)

3.3 遍历

// 1.通过迭代器遍历
// 假设容器vec为{4,3,2,1}
vector<int>::iterator iter;
for(iter=vec.begin();iter!=vec.end();iter++) {cout<<*iter<<endl; // 注意是 *iter!
}
// 2.通过索引遍历
// 假设容器vec为{4,3,2,1}
for(int i=0;i<vec.size();i++) {cout<<vec[i]<<endl;
}
// 3.通过auto遍历
// 假设容器vec为{4,3,2,1}
for(auto ele:vec) {cout<<ele<<endl;
}

3.4 判断指定元素是否存在

// 假设vec为{4,3,2,1}
vector<int>::iterator iter=find(vec.begin(),vec.end(),num);
if(iter!=vec.end()) cout<<*iter<<endl; // *iter=num
else cout<<"未找到!"<<endl;

C++的vector用法详解!!!强大索引,一目了然,分分钟搞定!!!相关推荐

  1. STL中map和string, vector 用法详解

    1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...

  2. vlan配置实例详解_网工知识角|MUXVLAN技术详解,基本原理一篇搞定

    学网络,就在IE-LAB 国内高端网络工程师培养基地 MUX VLAN(Multiplex VLAN )提供了一种通过VLAN进行网络资源控制的机制.通过MUX VLAN提供的二层流量隔离的机制可以实 ...

  3. mapreduce图示原理深入详解,几张图搞定

    1. MAPREDUCE原理篇 Mapreduce 是一个分布式运算程序的 编程框架 , 是用户开发"基于 hadoop 的数据分析应用"的核心框架: Mapreduce 核心功能 ...

  4. C++ vector用法详解

    vector是STL的动态数组,可以在运行中根据需要改变数组的大小. 因为它以数组的形式储存,所以它的内存空间是连续的. vector的头文件为#include<vector> 常用方法: ...

  5. C++中vector用法详解

    1.vector的简单介绍 vector作为STL提供的标准容器之一,是经常要使用的,有很重要的地位,并且使用起来也是灰常方便.vector又被称为向量,vector可以形象的描述为长度可以动态改变的 ...

  6. Vector用法详解

    这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通过阅读 ...

  7. 【c++】 vector用法详解

    vector容器表示对象以及其索引的集合,本文记录其常见用法和案例 1.头文件 #include <vector> 2.初始化 vector<int> v1; //对v1执行默 ...

  8. C++中的vector用法详解

    目录 一.vector介绍 1.vector(向量) 2.变量声明 二.详细的函数实现功能 1.建立一个容纳1-1000值的vector 2.使用下标访问元素 3.使用迭代器访问元素 4.插入和删除元 ...

  9. Android中vector用法详解

    在安卓的发展历程中,由于设备碎片化的原故,谷歌在app中图标的适配上做出一步又一步的改进,大体有这么几个阶段: 首先有了drawable-(m|h|xh|xxh|xxxh)dpi 自android s ...

最新文章

  1. 【RocketMQ】【分布式事务】使用RocketMQ实现分布式事务
  2. python 深拷贝_Python之类的浅拷贝与深拷贝
  3. 设计模式C++实现(8)——代理模式
  4. Spark _13_二次排序问题
  5. linux运维(五)
  6. Envi和Arcgis软件冲突的解决方法
  7. python3中的rang()函数
  8. 一次Python性能调优经历
  9. 【C++入门】从C到C++
  10. 《Tomcat权威指南》读书笔记
  11. pandas聚合group函数
  12. 【牛客网SQL篇】SQL必知必会
  13. ug计算机环境变量,ug80添加中文环境变量的具体方法
  14. 读书笔记之财报就像一本故事书
  15. 客房管理系统前台代码html,中顶酒店客房前台管理系统
  16. cad画流程图的插件_PIDCAD工艺流程图绘图软件
  17. Maven项目创建 Could not create local repository at 双重目录(F:/XX/F:/BB)怪异现象
  18. 阿根廷公布世界杯23人名单以及点评
  19. 2022-2027年中国百元酒店行业市场全景评估及发展战略规划报告
  20. 计算机保研QA——by chx

热门文章

  1. JQuery之动画与特效
  2. win10常用的一些的快捷键
  3. Windows下安装使用netcat
  4. ASIC加速技术在航空航天领域的应用:提高飞行器速度和稳定性
  5. 转帖 外汇保证金风险完全剖析
  6. 长得类似铁甲小宝的机器人_铁甲小宝中,所有机器人论强弱排名谁最强?
  7. 部署之用 OneAPM 作为你的监控平台 (一)
  8. 陈艾盐:《春燕》百集访谈节目第四十六集
  9. 常见用户行为分析模型解析
  10. misaka and last order SCU - 4489 (筛法的灵活应用)