【发布时间】:2012-12-13 01:25:47
【问题描述】:
最近我发现 C 和 C++ 之间存在一些速度差异,有时很难说在一种情况下哪一个更快。
我知道 STL 自推出以来已经简化了很多,但它是否在速度/内存成本方面简化了一些东西?
例如,有多种方法可以使用带有指针的结构来定义堆栈/队列/二叉树/图等。不过,这些实现有点复杂。另一种方法是简单地使用来自 STL 的向量,该向量具有使用模板随意增加和减小大小的能力。还为地图、队列等实现了许多模板。
我的问题是,您认为哪种实现在时间和内存复杂性方面更有效,为什么?
【问题讨论】:
-
你将不得不很多更具体。
-
无法回答这个问题。这取决于相关的实现和数据结构。但在大多数主流实现中,STL 数据结构都非常高效。有一些争论的空间(例如,std::vector 有时可能不如使用
realloc调整大小的自定义 C 动态数组执行得好),但总的来说,在效率方面很难击败 STL。 -
Stdlib 数据结构与“Roll Your Own”是我读到的:不是完全重复,但是 - stackoverflow.com/questions/2253690/what-makes-stl-fast
-
听起来像是功课。有代码示例吗?