【发布时间】:2013-01-02 15:44:05
【问题描述】:
我需要一个排序和索引的容器。我想基于 std:set 或 std::vector 构建它。通过使用 set,我需要昂贵的 std::distance 来计算其元素的索引。通过使用向量,我知道添加或删除元素的成本很高。假设我的元素是一个指针(小对象)。我知道两个操作的复杂性是相同的。但是哪个更快?谢谢。
【问题讨论】:
-
你试过测量它吗?此外,
std::set有其他限制(例如唯一值),std::vector未排序。你想做什么? -
测量它。当查找次数比突变次数多得多时,排序向量可能可能更好,但理论上无法预测这一点。
-
不要猜测,测量!提示:
vector具有较高的局部性 -
这真的取决于使用的元素数量......
-
为了节省您的时间,boost::flat_set。那里还链接了一篇您可能感兴趣的文章。
标签: c++ data-structures vector set