目前我正在尝试从一个集合中擦除一个迭代器序列,但是,由于std:: set :: erase ( iterator )应该返回一个迭代器(下一个迭代器),所以GCC的标准库似乎被破坏了,但是在GCC中,它返回void (这是标准的吗?)
不管怎样,我想写:
myIter = mySet.erase(myIter);但是GCC不喜欢这样。那么写这篇文章安全吗?
mySet.erase(myIter++);编辑:是的,我正在检查mySet.end();
发布于 2008-10-02 07:51:07
首先,重新阅读标准,您将看到set::erase方法的原型是:
void erase(iterator position);然而,STL中的关联容器是“稳定的”,因为擦除一个元素不会影响其他元素上的迭代器。这意味着以下行是有效的:
iterator to_erase = myIter++;
mySet.erase(to_erase);
// Now myIter is still on the next elementhttps://stackoverflow.com/questions/161166
复制相似问题