当前位置:  开发笔记 > 编程语言 > 正文

在将迭代器用作参数时,增加迭代器是否安全?

如何解决《在将迭代器用作参数时,增加迭代器是否安全?》经验,为你挑选了1个好方法。

目前我正在尝试从集合中擦除一系列迭代器,但是GCC的标准库似乎被破坏了,因为std :: set :: erase(iterator)应该返回一个迭代器(下一个迭代器),但是在GCC中它返回void (这是标准的吗?)

无论如何我想写:

myIter = mySet.erase(myIter);

但GCC不喜欢它......所以写这个是否安全?

mySet.erase(myIter++);

编辑:是的我正在检查mySet.end();



1> Camille..:

没有问题

mySet.erase(myIter++);

操作顺序是明确定义的:myIter被复制到myTempIter中,myIter递增,然后myTempIter被赋予擦除方法.

对于Greg和Mark:不,在调用erase之后,operator ++无法执行操作.根据定义,在operator ++返回后调用erase().

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有