【发布时间】:2014-02-07 09:04:17
【问题描述】:
因此我有一个std::set<int> 和std::list<int>。
我想对我的容器进行分类。
对于集合,对于 n 插入的元素,我将具有像 O(nlogn) 这样的复杂性。
对于列表,我将具有像 O(n) 这样的复杂性,用于插入 n 元素 + O(nlogn) 用于调用 list::sort。
在这两种情况下,复杂度都是O(nlogn),但在std::list 的情况下还有额外的O(n) 操作。我有一些固定的时间用于set 重新平衡。
问题来了,哪个容器运行得更快?
【问题讨论】:
-
无法判断,需要使用profiler。
-
你是否只插入一次元素(然后只访问它们,因为你只对列表排序一次)?
-
是的,一旦我插入它们,我就开始使用而无需任何额外的插入。
-
所以你可以使用
std::vector,它对缓存更友好。 -
bigocheatsheet.com给你一个想法
标签: c++ stl time-complexity array-algorithms