一、为什么要用vector而不是数组
虽有嘉肴,弗食,不知其旨也。______,____,____________。
简单来说就是节约内存,不容易RE
二、如何使用vector
既谓之数组,则用之如数组
1.定义
vector<数据类型>名称
vector<int >a;
2.向末端添加元素
It is something that only Apple vector can do
a.push_back(添加的元素)
a.push_back(i)//向a的末端添加一个数i
3.随机访问
a[i]
4.遍历 (C++14版本)
for(auto i=a.begin();i!=a.end();i++){cout<<*i<<" ";}
因为i实际上是迭代器,所以输出的时候记得解引用
5.插入元素
// 示例:vector的快速插入
vector<int> vec = {1, 3, 4};
vec.insert(vec.begin() + 1, 2); // 插入元素2 → {1,2,3,4}
扩展:vector+二分动态维护中位数,代替堆
P1168 中位数 - 洛谷
这题如果不用这种方式的话,就要通过堆这种数据结构来做
但是用上述方法十分利于新手
6.重新定义大小
void resize(size_type n);
void resize(size_type n, const value_type& val);
//参数说明
//n:新的容器大小(元素数量)
//val:当需要新增元素时,用于初始化新元素的值(可选参数)
7.”发展前景“广阔
在其他stl函数里,一般参数都是迭代器。比如upper_bound(),lower_bound(),sort()数组固然是可以衔接的,但是毕竟vector访问本身就用的迭代器。二者搭配使用更佳