调用STL容器擦除之类的迭代方法是否安全(使用2个迭代器的替代方法),例如在我的情况下std::vector::erase()
,两个参数都是vec.end()
?我做了一个实验,看起来该调用什么也没做,但是我想确保可以在代码中安全地使用它,否则我必须测试我的迭代器,如果它们相等则避免使用erase()
。
最佳答案
C ++标准(n3337),23.2.3,序列容器,表100(序列容器要求)-第a.erase(q1,q2)
行:
效果:擦除[q1,q2)
范围内的元素。
这意味着a.erase(q,q)
是安全的,因为它什么也不做。
Loki Astari对this SO question的回答列出了C ++标准的草案。不幸的是,官方副本不是免费提供的,所以我使用的是n3337,它似乎是最接近C ++ 11的版本。
关于c++ - 具有相同参数的std::vector::erase,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14824340/