因此我有一个std::set<int>
和std::list<int>
我想把我的容器分类。
对于集合,O(nlogn)
插入元素的复杂度为n
对于列表,我会有O(n)
的复杂性,用于插入n
元素+ O(nlogn)
来调用list::sort
。
在这两种情况下,复杂度为O(nlogn)
,但O(n)
的情况下会有额外的std::list
次操作。我有一段时间set
重新平衡。
这是一个问题,哪个容器可以更快地运行?
答案 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)
。