繁体   English   中英

具有相同参数的std :: vector :: erase

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM