示例1:
#include "iostream"
#include "vector"
using namespace std;
int main(void)
{
vector<int>array;
array.push_back(100);
array.push_back(300);
array.push_back(300);
array.push_back(500);
vector<int>::iterator itor;
for(itor=array.begin();itor!=array.end();itor++)
{
if(*itor==300)
{
itor = array.erase(itor);
}
}
for(itor=array.begin();itor!=array.end();itor++)
{
cout<<*itor<<" ";
}
return 0;
}
输出结果为:100 300 500
为什么不是100 500呢?
原因如下:
vector erase以后,itor已经指向下一个元素了,不应该执行itor++,
否则会跳过下一个元素,即连续两个300时跳过了第二个300.
vector的初始化方式总结:
vector<T> v1;//v1是一个空vector,它潜在的元素是T类型的,执行默认初始化
vector<T>v2(v1);//v2中包含有v1所在元素的副本
vector<T>v2=v1;//等价于v2(v1),v2中包含v1所有元素的副本
vector<T>v3(n,val);//v3包含了n个重复的元素,每个元素的值都是val
vector<T>v4(n);//v4包含了n个0
vector<T>v5{a,b,c,...}//v5包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T>v5={a,b,c,...}//等价于v5{a,b,c..}