目前我试图从一组中删除一系列迭代器,但是GCC的标准库似乎被破坏,因为std :: set :: erase(iterator)应该返回一个迭代器(下一个迭代器),但是在GCC中它返回void(这是标准?)当使用它作为参数时,增加一个迭代器是否安全?
反正我想写:
myIter = mySet.erase(myIter);
但是GCC不喜欢它... ... 因此它是安全的,而不是写这个?
mySet.erase(myIter++);
谢谢!
编辑:是的,我正在检查mySet.end();
你说的只是因为操作符++已被类重新定义。对于POD,操作员实际上是在线后呼叫的! – PierreBdR 2008-10-02 08:05:50
是的,这是一个有趣的评论。关键在于操作顺序与POD类型无关,因为增量总是定义明确的。 那么你总是可以想象奇怪的情况下,方法有一些访问POD变量的引用,但这不被推荐。 – Camille 2008-10-02 08:32:47