删除元素
一般情况下,使用向量就是因为删除元素很方便,但是最近出了很多错误。关于删除元素,做一下总结吧~
删除单个元素
vector<int> a;
a.erase(a.begin()+2);
这是删除第三个元素!
若是想删除下标为i的元素,位置要填vec.begin()+i+1!!!
(这个错好几次了)
删除一段区间的元素
vector<int> a;
a.erase(a.begin()+i,a.begin()+j);
这是删除区间[i,j-1]的元素!!!
比如想删除i-j的元素
括号里需要写vec.begin()+i, vec.begin()+j+1
向量的清空
若有多组测试数据,一定记得每次操作后,对向量进行清空!!!
具体操作:
vec.clear();
begin,end,front,back的区别
begin()和end()返回类型是迭代器
begin()返回第一个元素的迭代器,end()返回最后一个元素之后的迭代器
因此:
vector<int> a;
a.erase(a,begin());//这是删除第一个元素
a.erase(a.end()-1);//这是删除最后一个元素
front()和back()返回的是向量元素的引用
vector<int> a;
cout<<a.front();
cout<<back();
//这是分别输出向量的第一个元素和最后一个元素
在我的理解里,begin和end是一个地址,而front和back是一个数值
关于STL的一些理解
STL (Standard Template Library) 标准模板库
STL将数据结构和算法进行了分离,因为STL分为三大类:容器,迭代器(类似于指针)和算法,容器和算法通过迭代器相互连接,这使得STL得到广泛的使用