c ++ std :: vector performance [需要参考]

时间:2010-11-25 21:12:36

标签: c++ stl vector

我正在编写一些数据结构的并行实现。我想知道是否有人知道纯指针和std :: vector之间的性能差异。如果您知道有关它的可靠文档,请写下URL /书名/等等。欢迎任何提示!

4 个答案:

答案 0 :(得分:5)

区别在于用法实施相对。

答案 1 :(得分:3)

你可以使用unchecked operator []和正确调整大小,使std :: vector与普通指针一样快。实际情况是,向​​量是指针的编译时抽象,而不是运行时抽象,除非您选择使用额外的。更重要的是大大增加的安全向量提供 - 调试迭代器,自动和安全的资源管理等。没有理由使用原始指针。

编辑:我的参考是你甚至在考虑失去向量的安全性之前就已经完成了分析。

答案 2 :(得分:0)

根据this answer in a similar question,访问动态分配数组中的元素与std::vector的元素大致相同。这个问题和this one as well中有一些很好的分析。

答案 3 :(得分:0)

如果你想将std::vector与一些手写的动态数组进行比较,这里有一些参考点:

  • 插入时的调整大小因素很重要。该因子不是由标准规定的,但通常在1.5或2之间,并且必须保证在插入操作中分摊的固定时间。
  • 分配器:很多性能取决于所使用的分配机制,同样适用于你的指针。
  • 如果您使用原始指针无法调用std::vectorvector::at可能会发生边界检查。