一、基本概念
使用它首先要引入头文件
#include <vector>
它是一个封装了动态大小数组的顺序容器。在C++、Java中的数组就是顺序存储数组的,且不能像Python那样在一个数组中存储多种数据类型的数据,不过那种一般属于列表。
由于它用来存储动态数组,所以一般来说应该使用在获取用户输入等类似的应用场景,而不是用来存储固定长度数组的。
二、使用格式
vector<类型>标识符
vector<类型>标识符(最大容量)
vector<类型>标识符(最大容量,初始所有值)
int i[5]={1,2,3,4,5}
vector<类型>vi(i,i+2);//得到i索引值为3以后的值
vector<vector<int>>v; 二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过
可以看到,它的使用方式为:首先声明vector关键字,然后在后面的尖括号中写上数据类型 ,定义这个数组的数据类型,之后写上标识符,一个vector动态数组就如此定义完成,但如果还想添加它的最大容量和初始所有值,可以在后面的圆括号中进行添加。
上面例子给出的用法,是定义一个长度为5的整形数组,赋值初始值为12345,然后将数组的首地址传给了标识符后的最大容量位置,将数组中的3传入了初始所有值的位置。
它里面涉及到的函数有
push_back() //在数组的最后添加一个数据
pop_back() //去掉数组的最后一个数据
at() //得到编号位置的数据
begin() //得到数组头的指针
end() //得到数组的最后一个单元+1的指针
find() //判断元素是否存在
front() //得到数组头的引用
back() //得到数组的最后一个单元的引用
max_size() //得到vector最大可以是多大
capacity() //当前vector分配的大小
size() //当前使用数据的大小
capacity(); //返回a在内存中总共可以容纳的元素个数
a.reserve(100); //改变当前vecotr所分配空间的大小将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100
a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,增加的元素其值默认为0
a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,增加的元素其值为2
erase() //删除指针指向的数据项
clear() //清空当前的vector
rbegin() //将vector反转后的开始指针返回(其实就是原来的end-1)
rend() //将vector反转构的结束指针返回(其实就是原来的begin-1)
empty() //判断vector是否为空
swap() //与另一个vector交换数据
a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换
reverse(obj.begin(),obj.end());反向迭代器,实现元素对调
可以使用这些函数来进行动态数组的操作。
参考文章:C++中的vector的详细用法_c++vector用法-CSDN博客
本人博客内容仅供交流学习用,如涉侵权联系本人侵删。