免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3346 | 回复: 13
打印 上一主题 下一主题

[C++] 请教一个问题,关于C++容器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-23 10:52 |只看该作者 |倒序浏览
近来在学习C++ primer(第四版),看到第276页,对书上例举的一段代码不解,贴出来请教各位大虾

vector<int>::iterator first = v.begin();
while (first != v.end())
{
    //do some processing
    first = v.insert(first, 42);   //insert new value
    ++first;   //advance first just past the element we added
}


我认为这段代码将会陷入死循环,直至内存耗光,不知是不是理解正确?

论坛徽章:
0
2 [报告]
发表于 2009-07-23 13:06 |只看该作者
有没有哪位高手教教小弟啊,不胜感激

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
3 [报告]
发表于 2009-07-23 13:20 |只看该作者

回复 #1 longzhui 的帖子

好像确实漏掉了一个++

    first = v.insert(first, 42);
    ++first;
    ++first; // 还要再++一次



lz真细心

论坛徽章:
0
4 [报告]
发表于 2009-07-23 16:16 |只看该作者
原帖由 OwnWaterloo 于 2009-7-23 13:20 发表
好像确实漏掉了一个++

    first = v.insert(first, 42);
    ++first;
    ++first; // 还要再++一次



lz真细心


呵呵,我也是这么觉得,但是不太敢质疑这本书,毕竟太出名了,那么多人看这本书也没人提出过这个问题。。。

论坛徽章:
0
5 [报告]
发表于 2009-07-23 21:20 |只看该作者
中文翻来的排版老错

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
6 [报告]
发表于 2009-07-23 21:49 |只看该作者
问个问题
insert会不会导致iterator失效?

论坛徽章:
0
7 [报告]
发表于 2009-07-23 22:25 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
8 [报告]
发表于 2009-07-23 22:35 |只看该作者
这个具体不太有把握
看看这个
http://blog.csdn.net/ljt3969636/archive/2009/07/05/4323172.aspx

哪位给详细讲讲

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
9 [报告]
发表于 2009-07-24 00:50 |只看该作者

回复 #8 openspace 的帖子

标准要求vector中的元素连续存放, 所以对N次insert,当N足够大时,一定会失效。

而如果标准没有要求vector元素减少时,一定要释放其空间(标准是否有要求不太清楚)。
如果某个vector实现不释放其空间, erase就不会导致失效。

论坛徽章:
80
20周年集字徽章-庆
日期:2020-10-28 14:09:1215-16赛季CBA联赛之北京
日期:2020-10-28 13:32:5315-16赛季CBA联赛之北控
日期:2020-10-28 13:32:4815-16赛季CBA联赛之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
10 [报告]
发表于 2009-07-24 08:30 |只看该作者
应该是有问题的。楼主很细心啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP