简单问题:是否有任何STL容器允许我在恒定时间内删除当前迭代器位置? 提前谢谢!
答案 0 :(得分:2)
至少std :: list允许在恒定时间内擦除元素。
答案 1 :(得分:2)
复杂性
1)常数。
2)第一个和最后一个之间的距离是线性的。
对于案例2,您可以对一系列元素使用erase。
来自文档的,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
)
答案 2 :(得分:1)
如果您不需要维护元素的顺序,可以将std::vector
与“swap and pop”一起使用 - 将要删除的元素与向量中的最后一个元素交换,然后弹出新的最后一个元素。