为了账号安全,请及时绑定邮箱和手机立即绑定

C++ iterator在container的begin时和end时分别--和++会怎么样

C++ iterator在container的begin时和end时分别--和++会怎么样

函数式编程 2019-04-19 16:11:20
在C++中使用容器时,经常会对iterator赋值begin和end,如果当iterator=container.begin()时,再使用--iterator,这时iterator的值是什么代表什么意思,如果再使用++iterator,还会变成原来的值吗。在macos10.10下使用clang3.5实测:intmain(){std::vectora;a.push_back(1);a.push_back(2);std::vector::iteratoriter=a.begin();--iter;std::cout
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

STL标准中的说法是未定义,或者说是某某操作会让迭代器失效,并且不要使用未定义或者失效的迭代器。
但各家编译器的具体实现各不相同,我曾经做过vector和map的迭代器在红帽Linux、HPUX和IBMAIX上越界后的实验,最严重的反应是程序直接跑飞了……
为了程序更好的兼容性,听标准的话吧~
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信