vector收录在STL(C++标准库)里,是一种特殊的数据结构,名字叫做“动态数组”或者“不定长数组”,有时也被翻译成“容器”。其实就是一种非静态数组,可以进行修改、增长。
一、头文件
调用Vector需要使用2个头文件:
#include
using namespace std;
二、vector的声明
1、需要声明数组中存储的数据类型,格式为:
vector <数据类型> 动态数组名;
如: vector array;
2、声明的时候可以一并赋初值,比如:
vector M(a,b);//在M里装a个b
vector N(a); //在N里装a个0
vector B(A);//一个和A一模一样的动态数组
vector C(B.begin()+l,B.end()-r);//继承B动态数组下标[l,B.end()-r)的值
三、vector的基本操作
以vector v为例:
① v[i]或v.at(i)//返回v[i]的值
② v.size();//返回v数组元素总个数
③ v.front();//返回v数组第一个元素的值
④ v.back();//返回v数组最后一个元素的值
⑤ v.clear();//清空v数组
⑥ v.begin();//返回v数组第一个数的地址
⑦ v.end();//返回v数组最后一个数的地址
⑧ v.empty();//判断v数组是否为空,是空则返回1(true),非空(有元素)则返回0(false)
⑨ v.swap(v1);//v1是另一个动态数组,将v和v1元素互换
⑩ swap(v,v1);//同⑨
11 v.capacity();//返回v数组的长度,就相当于int v[20000];的20000
12 v.resize(k);//将v数组的长度设为k
注意:再次重申,vector的下标是从0开始的!
注意:除v[i]外,其余都是vector的自带函数,因此必须添上括号!
四、vector数组的插入
① v.push_back(a);//在v数组的尾部插入数a
比如:
有一个动态数组x:2017 2333
调用x.push_back(666);
则x:2017 2333 666
② v.insert(v.begin()+k,a);//在下标k的前面插入数a,k之后的数依次后退一位
//记住,下标是从0开始的!
比如:
动态数组x:1 2 3 4 5 6
调用x.insert(x.begin()+2,100);
则x:1 2 100 3 4 5 6
③ x.insert(x.begin()+k,p,a);//在下标k前面插入p个a
五、vector的删除
① v.pop_back()//删除最后一个元素
② v.erase(v.begin()+k);//删除下标为k的数,返回下一个位置的下标
③ v.erase(v.begin()+l,v.end()-r);//删除下标[l,v.end()-r)的元素
六、vector内存机制
当向vector内新添加变量超过原有的数组长度时,数组的长度会翻倍,所以提前预留好足够长度,以免浪费空间,程序运行时间长