Vector容器
0.Vector(动态数组)容器介绍
头文件
#include <vector>
插入和删除
尾插(删)速度快,中间插入(删)速度慢(需要把插入部分后的全部后移)
访问
可以用下标法 [target],或者**at(target)**进行访问,尽量使用at(),越界了会抛出越界信息
1.构造
无参构造
//简单类型
vector<int> v_int
vector<float> v_float
vector<string> v_string
//复杂类型
vector<node> v_nodes //strcut node
vector<CA> v_CA //class CA{}
有参构造
int arr[] = {1,2,3,4,5};
vector<int> v1(arr,arr+5); //将数组arr存进去,左闭右开
vector<int> v2(v1.begin(),v1.end()); //将v1拷贝给v2
vector<int> v3(v1); //用拷贝构造函数将v1拷贝给v3,等价于vector <int> v3=v1
vector<int> v4(3,10); //存储三个10
vector<int> v5(10); //指定空间大小为10
2.赋值
vector.assign(beg,end); //[beg,end)区间内的数据拷贝赋值给本身,左闭右开,会覆盖原有元素
vector.assign(n,elem); //将n个elem拷贝赋值给本身
vector& operate=(const vector &vec); //重载等号操作符
vector.swap(vec); //交换两个vec
3.大小
vector.size(); //返回容器元素的个数
vector.empty(); //判断一个容器是否为空,返回值是一个bool值
vector.resize(num); //重新指定容器的长度为num,如容器变长,则以默认值填充新位置,如果容器变短,则末尾删除超出容器长度的部分
vector.resize(num,elem); //指定以elem填充
4.操作
//插入
vector.push_back(2); //尾部插入
vector.insert(vector.begin()+3,2); //在中间第三个元素前面插入一个2
vector.insert(vector.begin()+3,2,10); //在第三个元素前面插入两个10
vectorA.insert(vectorA.begin()+3,vctorB.begin(),vectorB.begin()+3); //在第三个元素前面插入B区间内的元素
//删除
vector.pop_back(); //删除末尾元素
vector.erase(vector.begin(),vector.end()); //起始到终点全部清空
vector.erase(vector.begin(),vector.begin()+3); //起始元素到第三个元素删除
vector.clear(); //清空
//遍历
vector<int> v(10,2);
//迭代器法
vector<int>::iterator it;
for(it = v.begin();it!=v.end();it++) cout<<*it;
//直接遍历法
for(int i=0;i<v.size();i++) cout<<v.at(i);
for(auto i:v) cout<<i;