容器复杂性

时间:2014-02-07 09:04:18

标签: c++ stl time-complexity array-algorithms

因此我有一个std::set<int>std::list<int> 我想把我的容器分类。
对于集合,O(nlogn)插入元素的复杂度为n 对于列表,我会有O(n)的复杂性,用于插入n元素+ O(nlogn)来调用list::sort
在这两种情况下,复杂度为O(nlogn),但O(n)的情况下会有额外的std::list次操作。我有一段时间set重新平衡。

这是一个问题,哪个容器可以更快地运行?

1 个答案:

答案 0 :(得分:2)

如果你想要一个' const '排序容器,我建议std::vector缓存友好。

初始化期间:

  • push_back所有元素O(n)
  • std::sort向量O(n log n)
  • std::unique如果您要删除重复项(如std::set那样)。 O(n)

初始化为O(n log n)

要检查元素是否存在,请使用std::binary_search代替O(log n)

相关问题