Vector(向量)和数组类似,都是用于存储一组相同类型的元素的数据结构,总体来说,在C++中,vector相比array更加动态,灵活,也可以进行更多操作,例如push_back、pop_back、insert等。
使用:首先需包含头文件 #include<vector>
建立一个vector: vector<数据类型> 数据名(数据大小),例如vector<int> vec(10);
操作:对于指定vector内某一项的操作和array类似,比如我要对第一项赋值为1:
vec[0] = 1;
vector不支持array那样一次赋值多项的初始化列表,因此只能一项一项赋值。
然而我们可以用已经初始化的array来初始化 vector:
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
vector<数据类型> vector名(array名,arr名+arr大小);
vector<int> vec(arr,arr+10);
常用操作:
-
插入操作:
push_back(val)
: 在向量末尾添加一个元素val
。insert(pos, val)
: 在指定位置pos
插入元素val
。emplace_back(args)
: 在向量末尾就地构造一个新元素,使用参数args
。emplace(pos, args)
: 在指定位置就地构造一个新元素,使用参数args
。
-
删除操作:
pop_back()
: 删除向量末尾的元素。erase(pos)
: 删除指定位置pos
的元素。erase(begin, end)
: 删除指定范围[begin, end)
内的元素。
-
访问元素:
at(pos)
: 返回指定位置pos
的元素,带有越界检查。operator[](pos)
: 返回指定位置pos
的元素,不带有越界检查。front()
: 返回向量的第一个元素。back()
: 返回向量的最后一个元素。data()
: 返回指向向量数据的指针。
-
大小和容量:
size()
: 返回向量中元素的个数。capacity()
: 返回向量当前分配的存储空间大小。resize(new_size)
: 调整向量的大小为new_size
,多出的元素使用默认值填充。reserve(new_capacity)
: 为向量分配至少new_capacity
大小的存储空间。
-
其他操作:
clear()
: 清空向量,删除所有元素。empty()
: 检查向量是否为空,返回true
或false
。swap(other_vector)
: 交换当前向量与other_vector
中的元素。