在stl容器中移除元素的恒定时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在stl容器中移除元素的恒定时间相关的知识,希望对你有一定的参考价值。
简单的问题:是否有任何STL容器允许我在恒定时间内删除当前的迭代器位置? 提前致谢 !
答案
复杂
1)常数。
2)第一个和最后一个之间的距离线性。
对于案例2,您在一系列元素中使用擦除。
来自文档,std::list<T>::erase
看起来像这样:
//(1)
iterator erase( iterator pos );
iterator erase( const_iterator pos );
//(2)
iterator erase( iterator first, iterator last );
iterator erase( const_iterator first, const_iterator last );
另一个是std::forward_list(不完全一样,因为它只有erase_after
)
另一答案
至少std :: list允许在恒定时间内擦除元素。
另一答案
如果您不需要维护元素的顺序,可以使用std::vector
和“swap and pop” - 您将要删除的元素与向量中的最后一个元素交换,然后弹出新的最后一个元素。
以上是关于在stl容器中移除元素的恒定时间的主要内容,如果未能解决你的问题,请参考以下文章