【发布时间】:2016-06-06 08:42:39
【问题描述】:
我最近一直在使用图表,我正在考虑从图表中返回一条路径。需要将路径作为 std 向量返回,其中包含所有以起始节点为首的节点。
我一直在寻找两种选择: - 使用slow vector insert方法在vector前面添加节点 - 使用双端队列将节点添加到前面(push_front),这要快得多。然后使用 std::copy 将双端队列复制到向量中
使用一种方法比另一种方法有显着的性能提升吗?
【问题讨论】:
-
为什么不推到向量的后面呢?
-
如果您不需要直接访问元素,我建议使用链表
-
我认为你应该专注于你可以找到你的路径的主要算法,而不是你选择的不是那么重要的数据结构,因为对于向量和出队来说,两者都是 O(n)。另外,你觉得std::copy不消耗时间和空间吗?
-
@Kilanny 在不了解确切使用模式的情况下很难推荐。由于缓存局部性差,列表的迭代时间比连续存储数据类型(例如
vector)要慢。 -
你在标题中说
queue,在正文中说deque。哪一个?两者都是标准库中的东西。
标签: c++ algorithm vector std deque