#include<vector>
//#include<stdio.h>
//usingnamespacestd;
//typedefstruct{
//intid;
//intname;
//}Student;
//
//
//
//intmain(){
//Studentss={12,13};
//printf("%d%d\n",ss.id,ss.name);
//vector<Student>st;
////struct初始化
//vector<Student>s(2,{12,13});//s(2,ss);
//s.push_back(ss);
//
//
//
//inti=1;
//
//while(i<10){
//printf("%d,%d",s.front().id,s.front().name);
//
//i++;
//}
//}
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<list>
usingnamespacestd;
voidPrintInt(constint&nData)
{
cout<<nData<<endl;
}
intmain()
{
vector<int>vecInt;
for(inti=0;i<10;++i)
{
vecInt.push_back(i);
}
cout<<"向量中的内容为:"<<endl;
//for_each(vecInt.begin(),vecInt.end(),PrintInt);
for(vector<int>::iteratoriter=vecInt.begin();iter!=vecInt.end();++iter){
cout<<*iter<<"";
}
cout<<"\n";
cout<<"vectorcontains"<<vecInt.size()<<"elements"<<endl;
vecInt.pop_back();//删除最后一个元素
cout<<"删除最后一个元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;
vector<int>::iteratork=vecInt.begin();
vecInt.erase(k);//删除第一个元素
for(vector<int>::iteratoriter=vecInt.begin();iter!=vecInt.end();++iter){
cout<<*iter<<"";
}
cout<<"\n";
//vecInt.erase(k);//迭代器k已经失效,会出错
cout<<"删除第一个元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;
k=vecInt.begin();
vecInt.erase(k);
for(vector<int>::iteratoriter=vecInt.begin();iter!=vecInt.end();++iter){
cout<<*iter<<"";
}
cout<<"\n";
cout<<"删除第一个元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;
//vecInt.erase(vecInt.begin(),vecInt.end());//删除所有元素
//cout<<"删除所有元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;//输出为0
vector<int>::iteratorvecNewEnd=remove(vecInt.begin(),vecInt.end(),5);//删除元素
cout<<"删除元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;
cout<<"向量开始到新结束为止的元素:"<<endl;
//for_each(vecInt.begin(),vecNewEnd,PrintInt);
cout<<"向量中的元素:"<<endl;
//for_each(vecInt.begin(),vecInt.end(),PrintInt);
return0;
}
扩展资料
vector删除区间内的元素
vecInt是用vector<int>声明的容器,现已包含按顺序的1,3,5,6,9元素。
vector<int>::iteratoritBegin=vecInt.begin()+1;
vector<int>::iteratoritEnd=vecInt.begin()+2;
vecInt.erase(itBegin,itEnd);
//此时容器vecInt包含按顺序的1,6,9三个元素。
假设vecInt包含1,3,2,3,3,3,4,3,5,3,删除容器中等于3的元素
for(vector<int>::iteratorit=vecInt.being();it!=vecInt.end();)//小括号里不需写++it
{
if(*it==3)
{
it=vecInt.erase(it);//以迭代器为参数,删除元素3,并把数据删除后的下一个元素位置返回给迭代器。
//此时,不执行++it;
}
else
{
++it;
}
}
//删除vecInt的所有元素
vecInt.clear();//容器为空
#include<vector>
//#include<stdio.h>
//usingnamespacestd;
//typedefstruct{
//intid;
//intname;
//}Student;
//
//
//
//intmain(){
//Studentss={12,13};
//printf("%d%d\n",ss.id,ss.name);
//vector<Student>st;
////struct初始化
//vector<Student>s(2,{12,13});//s(2,ss);
//s.push_back(ss);
//
//
//
//inti=1;
//
//while(i<10){
//printf("%d,%d",s.front().id,s.front().name);
//
//i++;
//}
//}
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<list>
usingnamespacestd;
voidPrintInt(constint&nData)
{
cout<<nData<<endl;
}
intmain()
{
vector<int>vecInt;
for(inti=0;i<10;++i)
{
vecInt.push_back(i);
}
cout<<"向量中的内容为:"<<endl;
//for_each(vecInt.begin(),vecInt.end(),PrintInt);
for(vector<int>::iteratoriter=vecInt.begin();iter!=vecInt.end();++iter){
cout<<*iter<<"";
}
cout<<"\n";
cout<<"vectorcontains"<<vecInt.size()<<"elements"<<endl;
vecInt.pop_back();//删除最后一个元素
cout<<"删除最后一个元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;
vector<int>::iteratork=vecInt.begin();
vecInt.erase(k);//删除第一个元素
for(vector<int>::iteratoriter=vecInt.begin();iter!=vecInt.end();++iter){
cout<<*iter<<"";
}
cout<<"\n";
//vecInt.erase(k);//迭代器k已经失效,会出错
cout<<"删除第一个元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;
k=vecInt.begin();
vecInt.erase(k);
for(vector<int>::iteratoriter=vecInt.begin();iter!=vecInt.end();++iter){
cout<<*iter<<"";
}
cout<<"\n";
cout<<"删除第一个元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;
//vecInt.erase(vecInt.begin(),vecInt.end());//删除所有元素
//cout<<"删除所有元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;//输出为0
vector<int>::iteratorvecNewEnd=remove(vecInt.begin(),vecInt.end(),5);//删除元素
cout<<"删除元素后,vectorcontains"<<vecInt.size()<<"elements"<<endl;
cout<<"向量开始到新结束为止的元素:"<<endl;
//for_each(vecInt.begin(),vecNewEnd,PrintInt);
cout<<"向量中的元素:"<<endl;
//for_each(vecInt.begin(),vecInt.end(),PrintInt);
return0;
}
扩展资料:
Vector函数的优点:
1、使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加;
2、Vector类提供额外的方法来增加、删除元素,比数组操作高效。
Vector函数的缺点:
1、时间:运行速度与数组相比较慢。
2、空间:clear()无法清空内存。
vector的删除功能
1、public final synchronized void removeElement(Object obj)
从向量中删除obj。若有多个存在,则从向量头开始试,删除找到的第一个与obj相同的向量成员。
2、public final synchronized void removeAllElement()
删除向量中所有的对象。
3、public final synchronized void removeElementlAt(int index)
删除index所指的地方的对象。
4、pop_back()
删除最后一个项(C++)
1、可以用erase方法删除vector指定位置的元素。
2、例程:
#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char** argv){
std::vector<int> vec;
for(int i=0;i<100;i++) vec.push_back(i);
printf("10:%d\n",vec[10]);
printf("size:%d\n",vec.size());
printf("**********************************\n");
std::vector<int>::iterator it = vec.begin()+10;
vec.erase(it);
printf("10:%d\n",vec[10]);
printf("size:%d\n",vec.size());
return 0;
}