头文件:#include “vector”
定义:vector v;
特性:动态数组存储空间为线性有序。
基本操作
1、初始化
vector<int>v; //定义,无空间
vector<int>v(10); //定义并分配10个空间
vector<int>v(10,3); //定义并分配10个空间,初值全为3
vector<int>b(10,3);
vector<int>v(b); //将b赋值给v
vector<int>b(10,3);
vector<int>v(b.begin(),b.begin()+3); //将b中前3个元素赋给a
int b[7]={1,2,3,4,5,6,7};
vector<int> a(b,b+7); //将b中前7个元素赋给a
vector<int> a;
a.assign(10,1); //先定义,后赋值初始化,在assign内进行上方语句
2、下标直接获取
a[n]:n为数值下标,可直接对vector内数据进行操作,下标从零开始,不能通过a[n]对未申请的存储空间插入数据
3、循环遍历(迭代法)
int b[7]={1,2,3,4,5,6,7};
vector<int> a(b,b+7);
for(int i=0;i<a.size();i++) //方法1
cout<<a[i]<<" ";
for(vector<int>::iterator it=a.begin();it!=a.end();it++) //方法2
cout<<*it<<" "; //it为迭代去,通过*it获取元素
常用函数
1、获取位置
1)v.begin():返回第一个元素的迭代器
2)v.end():返回末尾元素后一个元素的迭代器
2、获取元素
1)v.back():返回数组的最后一个元素,
2)v.front():返回数组的第一个元素
3、长度
v.size()
4、清空
v.clear()
5、判断空
v.empty()
6、删除
1)v.pop_back():删除a向量的最后一个元素
2)v.erase(v.begin(),v.begin()+3):删除前3个元素(不包括a.begin()+3)
7、添加
v.push_back(value); //在v的最后添加一个元素
8、插入
1)v.insert(v.begin()+n,value):在v的n+1位置插入一个元素
int b[] = {1,2,3,4,6,7,8,9};
vector<int> v(b,b+8);
v.insert(v.begin()+4,5); //1 2 3 4 5 6 7 8 9
2)v.insert(v.begin(),n,value):在v的开始位置插入n个元素value
vector<int> v;
v.push_back(10);
v.insert(v.begin(),b,b+6); //5 5 5 5 5 5 10
3)v.insert(v.begin(),b,b+6):b为数组,在v的开始位置插入b的前6个元素(不包括b+6)
int b[] = {1,2,3,4,5,6,7,8,9};
vector<int> v;
v.push_back(10);
v.insert(v.begin(),b,b+6); //1 2 3 4 5 6 10
9、比较
两个动态数组的比较:由数组名进行比较即可,向量的比较操作还有 != 、>=、 >、 <=、 <
int x[] = {1,2,3,4,6,7,8,9};
vector<int> b(x,x+8);
vector<int> a(x,x+8);
if(b==a)
cout<<"yes";
其它函数
v.capacity(); //返回a在内存中总共可以容纳的元素个数
v.resize(10); //将a的现有元素个数调整至10个,多则删,少则补,其值随机
v.resize(10,2); //将a的现有元素个数调整至10个,多则删,少则补,其值为2
v.reserve(100); //将a的容量扩充至100
v.swap(b); //b为向量,将a中的元素和b中的元素整体交换