调用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/

10-11 16:13