vector(向量)是一个封装了动态大小数组的顺序容器。顺序容器中的元素按照严格的线性顺序排序,可以通过在序列中的位置访问对应的元素,支持数组表示法和随机访问。wector使用一个内存分配器动态处理存储需求。使用wector时需要引入头文件#include<vector>。
(1)创建。vector能够存放各种类型的对象,可以是C++标准数据类型,也可以是结构体类型。eg:
vector<int>a;//创建一个空的vector,数据类型为int,数组为a
vector<int>a(100);//创建一个vector,数组名为a,元素个数为100,所有数的初值为0
vector<int>a(10,666);//创建一个vector,数组名为a,元素个数为10,所有数的初值为666
vector<int>b(a);//b是a的复制
vector<int>b(a.begin()+3,a.end()-3);//复制[a.begin()+3,a.end()-3]区间内的元素到vector中
创建二维数组:
vector<int>a[5];//相当于创建5个vector,每个都是一个数组
(2)增加。 向vector中添加元素,可以从尾部添加,也可以从中间添加。需要注意的是,从中间插入时需要将插入位置之后的所有元素后移,事件复杂度为O(n),效率较低。
a.push_back(5);//在向量尾部添加一个元素5
a.insert(a.begin()+1,10);//在a.begin()+1指向元素前插入一个10
a.insert(a.begin()+1,5,10);//在a.begin()+1指向元素前插入5个10
a.insert(a.begin()+1,b,b+3);//在a.begin()+1指向元素前插入b向量的区间元素
(3)删除。可以删除尾部元素、指定位置的元素、区间,还可以清空整个向量。
a.pop_back();//删除向量中的最后一个元素。
a.erase(a.begin()+1);//删除指定位置的元素
a.erase(a.begin()+3,a.end()-3);//删除区间[first,last]中的元素
a.clear();//清空向量
(4)遍历。可以用数组表示法,也可以用迭代器对向量元素进行访问。
for (int i = 0; i < a.size(); i++)
{
cout << a[i] << endl;
}
for (vector<int>::iterator it = a.begin();it < a.end();it++)
{
cout << *it << endl;
}
(5)改变向量的大小。resize可以改变当前向量的大小,如果它比当前向量大,则填充默认值;如果比当前向量小,则舍弃后面的部分。
a.resize(5);//设置向量的大小为5,如果在当前向量内有8个元素,则舍弃后面3个
相关练习举例:
Vector练习(间谍)-CSDN博客