vector容器简析
vector代表向量的意思,是一种顺序容器,一般情况下都是视为数组那样操作,但是和c/cpp数组不一样的地方就在于,c/cpp中数组需要预先分配大小,而vector数组和python中类似,是柔性数组,需要的时候就能分配相应大小,无序预先分配。
如果所需空间超过当前vector申请的空间,vector会重新分配一个更大的空间,然后把现有的数据拷贝过去,再对原内存空间的对象执行析构,最后释放掉原内存空间。
初始化vector对象
vector<T>v1;
默认初始化方式,内容为空 T代表数据类型
vector<T>v2(v1);
调用拷贝构造函数,v2是v1的一个拷贝
vector<T>v3(n,i);
初始化n个元素 值为i,如果i缺省则是为0
vector<T>v4{1,2,3};
这种新建方法在std=c++11以上可以使用,新建一个值为1,2,3的数组。
vector(begin,end);
复制 [begin,end) 区间内另一个数组的元素到 vector 中
vector常用函数
判断函数
empty()
:判断向量是否为空,为空返回真,否则为假
int capacity() const
: 返回当前向量张红所能容纳的最大元素值
int max_size() const
: 返回最大可允许的 vector 元素数量值
增加函数
push_back(数据)
:将数据插入到向量的尾部
iterator insert(iterator it,const T& x)
: 向量中迭代器指向元素前增加一个元素 x
iterator insert(iterator it,int n,const T& x)
: 向量中迭代器指向元素前增加 n 个相同的元素 x
iterator insert(iterator it,const_iterator first,const_iterator last)
: 向量中迭代器指向元素前插入另一个相同类型向量的 [first,last) 间的数据
删除函数
pop_back()
:删除向量尾部的数据
clear()
:清空向量
iterator erase(iterator it)
: 删除向量中迭代器指向元素
iterator erase(iterator first,iterator last)
: 删除向量中 [first,last) 中元素
遍历函数
iterator begin()
:返回向量(数组)的首元素地址给迭代器
iterator end()
: 返回向量(数组)的末元素的下一个元素的地址给迭代器
front()
:返回得到向量的第一个元素的数据
back()
:返回得到向量的最后一个元素的数据
size()
:返回得到向量中元素的个数(如果要对应下标需要减1)
reverse_iterator rbegin()
: 反向迭代器,指向最后一个元素
reverse_iterator rend()
: 反向迭代器,指向第一个元素之前的位置
其他函数
swap(vector&)
: 交换两个同类型向量的数据
assign(int n,const T& x)
: 设置向量中第 n 个元素的值为 x
assign(const_iterator first,const_iterator last)
: 向量中 [first,last) 中元素设置成当前向量元素
遍历方式
1.传统遍历方式 通过下标访问,和数组区别不大。
2.使用迭代器访问。
3.使用智能变量遍历:for(auto it:nums)