c++primer中文版的316页的 一个改变容器的循环程序
vector vi ={0,1,2,3,4,5,6,7,8,9};
auto iter=vi.begin();
while(iter!=vi.end()){
if(*iter!%2){
iter=vi.insert(iter.*iter);
iter+=2;
}
else
iter=vi.erase(iter);
}
这个程序不能用在forward_list中我知道是因为单向链表没用很好的获得前驱的方法,
只能作用于后一元素,但是list为什么也不行?
先谢谢了。
新人c++中 有关list 和forward_list的一点问题,还望指点。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 尚书左仆射 2016-08-07 05:57关注
主要是因为这句话:iter+=2; 这要求容器的迭代器为随机迭代器。 list虽然是双向循环链表,但是其迭代器为双向迭代器,不能满足要求。即不能有iter+=2;操作。 它只能做两次的++iter操作。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 求解 yolo算法问题
- ¥15 虚拟机打包apk出现错误
- ¥30 最小化遗憾贪心算法上界
- ¥15 用visual studi code完成html页面
- ¥15 聚类分析或者python进行数据分析
- ¥15 逻辑谓词和消解原理的运用
- ¥15 三菱伺服电机按启动按钮有使能但不动作
- ¥15 js,页面2返回页面1时定位进入的设备
- ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
- ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。