vector<int> vec; for (int i = 0; i <= 20; ++i) { vec.push_back(i); } vector<int>::iterator it = vec.begin(); while (it!=vec.end()) { int temp = (*it); if (temp % 5 == 0) { vec.erase(it); }else { ++it; } } //打印 for (int i = 0; i < vec.size(); ++i) { cout << vec[i] << endl; }
1、vector的insert()方法:可以在vector对象的任意位置前插入一个新元素,同时,vector自动扩张一个元素空间,插入位置后的所有元素依次向后移动一个位置。
值得注意的是:insert()方法要求插入的位置,是元素的迭代器位置,而不是元素下标位置。
下面代码输出:8,2,1,7,9,3
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v(3);
v[0]=2;
v[1]=7;
v[2]=9;
//在最前面的元素前插入8
v.insert(v.begin(),8);
//在第二个元素前插入新元素1
v.insert(v.begin()+2,1);
//在末尾插入新元素1
v.insert(v.end(),3);
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
cout<<*it<<endl;
system("pause");
return 0;
}
2、vector的erase()方法可以在vector中迭代器所指的一个元素或者一段区间的所有元素。
clear()方法则一次性删除vector中的所有元素。其中的erase()方法只和迭代器指针相关,不能用数组下标实现
删除。
/*****************************************************************************/
/*********************本程序设计向量的几个经典操作*****************/
/*****************************************************************************/
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
for(int i=0;i<10;i++)
v.push_back(i); //追加元素
//删除单个元素,从0开始计数,删除第二个元素
v.erase(v.begin()+2);
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
//删除一段元素,删除迭代器第一到第五区间所有元素
v.erase(v.begin()+1,v.begin()+5); //删除的起始位置和删除的最后一个元素的下一个位置
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
//清空向量操作输出大小验证
v.clear();
cout<<v.size()<<endl;
system("pause");
return 0;
}