【发布时间】:2014-05-10 03:07:44
【问题描述】:
考虑我必须向容器中添加随机数量的项目的情况,即无法预测容器的大小,插入的频率很高,并且插入应该在容器的末尾,除此之外,我想删除一个几乎恒定时间的元素。
注意:我还想使用共享内存中的列表或向量。
那么在这种情况下,使用 std::vector 还是 std::list 哪个更好?
【问题讨论】:
-
必须删除的元素在哪里?但最终我对几乎所有这些问题的回答是使用矢量作为默认值,如果您不确定,请使用列表制作第二个版本进行比较。又名简介它!
-
@RaphaelMiedl ,元素可以在任何地方。我需要随机访问。我还看到每次我需要向向量中添加元素时,都必须重新分配一个新的大小,这不适用于列表。
-
也可以考虑std::deque。
-
移除一个元素后是否需要其他元素的顺序相同?
-
不,我不需要,我读过关于 dequeue 的文章,他们说对于涉及频繁插入或删除除开头或结尾以外的位置的元素的操作,deques 的性能更差并且有迭代器和引用的一致性不如列表和转发列表。
标签: c++ list c++11 vector shared-memory