c++ 如何删除 vector中的第一个元素

如题,也就是删除最先插入vector中的元素,该如何实现呢... 如题,也就是删除最先插入vector中的元素,该如何实现呢 展开
 我来答
爱教育爱学习
高粉答主

2019-10-26 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112732

向TA提问 私信TA
展开全部

#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();//容器为空

你爱我妈呀
2019-11-19 · TA获得超过8.6万个赞
知道小有建树答主
回答量:686
采纳率:100%
帮助的人:26.4万
展开全部

#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++)

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2016-11-24 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:885万
展开全部

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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanjinhaerbin
推荐于2016-11-19 · 超过15用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:49.8万
展开全部
C++支持随即访问和插入,要想删除最先插入vector中的元素,除非你插入的时候保持一定的规则(例如每次都将元素插入vector的末尾),或者对每一次插入的动作都进行记录,否则不能够得知第一次插入的元素的位置。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjli1111
2013-01-08 · TA获得超过623个赞
知道答主
回答量:13
采纳率:0%
帮助的人:4万
展开全部
v.erase(0,1);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式