[英]std::vector::erase with equal arguments
调用诸如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对这个SO问题的答案列出了C ++标准的草案。 不幸的是,不能免费获得正式副本,所以我使用的是n3337,它似乎是最接近C ++ 11的版本。
是安全的; 这是有效的无操作操作,因为end()-> end()是一个空范围。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.