我是一名大三的学生,现在在实习,目前学习阶段,遇到一个问题,请各位大神帮帮忙~

BreaK1221 2017-04-10 11:19:46
是这样,主管给了我一个编程题,向list容器中插入1 8 6 7 9 ,五个元素,同时删除第三四位,最后便遍历容器,我实现了代码如下

#include "stdafx.h"
#include<iostream>
#include<list>


int main()
{
std::list<int>vInt; //创建一个类型为int的容器list
vInt.push_back(1); //从尾部插入元素1
vInt.push_back(8); //从尾部插入元素8
vInt.push_back(6); //从尾部插入元素6
vInt.push_back(7); //从尾部插入元素7
vInt.push_back(9); //从尾部插入元素9

//遍历输出
for (std::list<int>::iterator iter = vInt.begin(); iter != vInt.end(); iter++)
std::cout << *iter << std::endl;

std::cout << "擦除进行中" << std::endl;

//开始进行擦除步骤
for (std::list<int>::iterator iter = vInt.begin(); iter != vInt.end(); )
{
if (*iter==6||*iter==7)
{
vInt.erase(iter++); //坑,当擦除时,iterator会失效
}
else
{
iter++;
}
}

//容器遍历输出
for (std::list<int>::iterator iter = vInt.begin(); iter != vInt.end(); iter++)
std::cout << *iter << std::endl;
return 0;
}

擦出他说不能知道容器的值,我想问下我该怎么办,我想过用类似数组下标找到第三位和第四位,可是不行,请各位大神帮帮忙,谢谢啦,我刚才找到用advance(),能成功可是主管肯定会说不行,因为我基础太差,所以到底该怎么实现呢,求各位帮帮忙,谢谢~
...全文
226 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-04-10
  • 打赏
  • 举报
回复
BreaK1221 2017-04-10
  • 打赏
  • 举报
回复
谢谢,我会努力哒!
dayong657 2017-04-10
  • 打赏
  • 举报
回复
iter=vInt.erase(iter);      //这样iterator就不失效了

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧