12
返回列表 发新帖
楼主: 低碳马甲

iterator的死循环。

[复制链接]
论坛徽章:
52
天蝎座
日期:2016-02-18 17:22:06奥运会纪念徽章:花样游泳
日期:2012-07-16 22:06:37双黄蛋
日期:2012-03-21 20:16:10双黄蛋
日期:2012-02-29 11:03:35复活蛋
日期:2012-02-22 20:39:29紫蛋头
日期:2012-01-07 00:15:412012新春纪念徽章
日期:2012-01-04 11:49:54紫蛋头
日期:2011-11-27 21:54:28鲜花蛋
日期:2011-11-17 19:25:23ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
11#
发表于 2010-6-5 21:31 | 只看该作者
低碳马甲     注册日期 2010-4-15
  mwjx           注册日期 2002-5-9
  bodyguard  注册日期 2001-11-7

低碳马甲 ,你是否感觉到人需要有起码的修养?

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
12#
 楼主| 发表于 2010-6-5 21:35 | 只看该作者
原帖由 bodyguard 于 2010-6-5 21:31 发表
低碳马甲     注册日期 2010-4-15
  mwjx           注册日期 2002-5-9
  bodyguard  注册日期 2001-11-7

低碳马甲 ,你是否感觉到人需要有起码的修养?


你那个回复难道又尊重人了吗?哥15年前就明白了。

使用道具 举报

回复
论坛徽章:
30
会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:狗
日期:2009-03-28 16:05:28生肖徽章2007版:猪
日期:2009-04-04 21:44:07生肖徽章2007版:虎
日期:2009-04-14 17:43:48生肖徽章2007版:马
日期:2009-05-04 21:02:46生肖徽章2007版:牛
日期:2009-05-13 15:53:50生肖徽章2007版:兔
日期:2009-05-19 22:49:51生肖徽章2007版:猪
日期:2009-06-13 08:46:38ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00
13#
发表于 2010-6-5 23:18 | 只看该作者
原帖由 低碳马甲 于 2010-6-5 19:38 发表


不对,it是独立于what,很类似于一个指针,核心是保留指向set里面的一个节点,如果set为空,那么begin和end返回的it应该用某种形式表示其指向一个无效的节点。那么一个无效的节点--/++,无论多少次,还是指向一个无效的节点。这点和set里面有没有内容应该是完全一致的。但是事实的情况是,如果set有内容,无论你++/--多少次都不会出问题,但是set为空,++/--一次就出错了。

你可以想想,如果stl的set按你的想法这样实现,对写程序的我们就是一场灾难
我希望有错误是越早发现越好,程序崩溃或死循环都行
你所展示的代码其实就是下标越界,把it指到队列以外的空间,这已经是出错了
但你还希望系统不要报错,给一个正常的假象给程序员
我们程序员还傻呵呵++或--,而其实这个it早已经不知指向哪个异次元空间
但你的实现一直不告诉我们真相,还说,行的,这样没事,我们就一直处在虚幻的安全中继续做着错事
最恐怖的是我们还不知道出问题了
程序员需要的是一个可以依赖的伙伴set,我++了,那就一定是真的++了
如果不能++你就告诉我

使用道具 举报

回复
论坛徽章:
30
会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:狗
日期:2009-03-28 16:05:28生肖徽章2007版:猪
日期:2009-04-04 21:44:07生肖徽章2007版:虎
日期:2009-04-14 17:43:48生肖徽章2007版:马
日期:2009-05-04 21:02:46生肖徽章2007版:牛
日期:2009-05-13 15:53:50生肖徽章2007版:兔
日期:2009-05-19 22:49:51生肖徽章2007版:猪
日期:2009-06-13 08:46:38ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00
14#
发表于 2010-6-5 23:22 | 只看该作者
每种语言都有每种语言的潜规则
c&c++的潜规则之一就是我们c++程序员不需要保姆
我们知道世界很险恶,我们的最高需求是真相
而不是保姆提供的安全,我们能自己照顾自己

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
15#
 楼主| 发表于 2010-6-6 06:44 | 只看该作者
最厌恶,不懂装懂了,好不好?
iterator是等价于下标吗?
根本没有回答问题,还引入些玄而又玄的东西来忽悠。

既然你说++“越界”了不能让程序员继续,必须要以死循环来“通知”他,那么请问当set有一个元素时候,what.begin()----或者what.end()++++++等难道没有“越界”?为什么不死循环呢?

使用道具 举报

回复
论坛徽章:
52
天蝎座
日期:2016-02-18 17:22:06奥运会纪念徽章:花样游泳
日期:2012-07-16 22:06:37双黄蛋
日期:2012-03-21 20:16:10双黄蛋
日期:2012-02-29 11:03:35复活蛋
日期:2012-02-22 20:39:29紫蛋头
日期:2012-01-07 00:15:412012新春纪念徽章
日期:2012-01-04 11:49:54紫蛋头
日期:2011-11-27 21:54:28鲜花蛋
日期:2011-11-17 19:25:23ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
16#
发表于 2010-6-7 17:00 | 只看该作者
是否可以重复LZ的语言“最厌恶,不懂装懂了,好不好?”
mwjx告诉了你这是潜规则。
int i=0;
i++++++的结果是不确定的。
C++没规定她的运算顺序,也没规定她的结果。
在你的例子中,是迭代器运算,我没验证你的例子。你的代码给你来个死循环不犯法,当然,你可以说她不友好。这不是C++的错,要说错,你错在先。
再一次劝告LZ,做人还是稍微懂点礼貌。

[ 本帖最后由 bodyguard 于 2010-6-7 17:01 编辑 ]

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
17#
 楼主| 发表于 2010-6-8 21:31 | 只看该作者
又来一个扯淡的

难道我重新写了问题的描述,你还是不明白问题所在吗?

根本就不是+++++++的问题,而是空set的iterator不能进行任何++/--操作问题。

第一次描述里面用+++++++/-------来说明,如果set不为空无论你做多少次++/--都没有问题,反之任何一次都有问题。

第一次是我的写作能力问题,我修改了问题的描述,你还在扯这个,就是你的阅读问题了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表