【发布时间】:2020-08-19 12:03:52
【问题描述】:
std::vector:最后的插入是恒定的,摊销的时间,但其他地方的插入是一个代价高昂的 O(n)。
std::list:您不能随机访问元素,因此获取列表中的特定元素可能会很昂贵。
我需要一个容器,这样您既可以在 O(1) 时间内访问任何索引处的元素,也可以在 O(1) 时间内在任何索引处插入/删除元素。它还必须能够管理数千个条目。有这样的容器吗?
编辑:如果不是 O(1),一些 X
【问题讨论】:
-
由于内存行为,
std::vector<>几乎总是最佳选择,无论算法复杂度如何。 -
关于该主题的一些不错的阅读(以及一些不错的查看链接):stroustrup.com/bs_faq.html#list
-
@super 您是否测试过“它是如此缓慢”的说法,或者您只是基于时间复杂度?它很大程度上取决于平台,但通常至少需要数万或数十万个元素才能使其他容器变得更快。
-
具体来说,您想做什么?我猜这里还有一些专门用于您的目的的其他数据结构会更有用。
-
@super 没有回答我的问题。您仍然需要填充向量,那么您是否关心该种群期间 或该种群之后 的复杂性?你还没有真正提供任何有用的细节来说明你想如何使用你所寻找的容器。
标签: c++ list vector data-structures containers