【发布时间】:2016-09-21 15:53:32
【问题描述】:
array 与 std::queue,哪个在时间方面更好,为什么?
我编写了一种图处理算法,其中边界顶点存储在std::queue 中,并使用push_back() 和pop_front() 访问。当我用数组重新实现边界时,前端和结束指针指向边界顶点的开始和结束,我在时间方面得到了更好的结果。对于足够大的数据,数组真的比队列快吗?
【问题讨论】:
-
您将苹果与橙子进行比较。如果你需要一个队列结构,为什么要使用不是队列的东西?
-
访问数组和向量中的元素都是 O(1)。如果有的话,时差可以忽略不计。 做的不同之处在于向量是动态的,当您向向量添加元素时,它可能需要调整自身大小,包括复制现有数据。那可能很慢。如果您大约知道所需的元素数量,则可以为向量保留该数量,并且速度差会回到几乎为零。如果您想要一个具有编译时固定数量元素的容器,请改用
std::array。 -
一个是静态的,另一个是动态的。
-
这里遗漏了太多细节。您是否进行了优化编译?您使用的数据结构是否提供了比您需要的更多功能?您的代码是否仍然具有同样多的功能?
-
如果你没有优化编译,问性能是没有意义的。你把编译器的双手绑在背后。这是你改成的动态数组,还是固定大小的?
标签: c++ arrays algorithm graph stl