Arrays STL矢量与动态阵列的性能比较 我想知道C++动态数组和STL向量之间的性能有多大的差别。我知道这完全取决于您的代码和如何构造向量,例如,不利用std::vector::reserve和使用std::vector::push_back构造向量可能会导致性能不佳。然而,我不明白为什么有人会选择动态数组(使用操作符new[])而不是谨慎地使用向量。通常,正确实现的STL向量和动态数组之间是否存在显著的性能差距

Arrays STL矢量与动态阵列的性能比较 我想知道C++动态数组和STL向量之间的性能有多大的差别。我知道这完全取决于您的代码和如何构造向量,例如,不利用std::vector::reserve和使用std::vector::push_back构造向量可能会导致性能不佳。然而,我不明白为什么有人会选择动态数组(使用操作符new[])而不是谨慎地使用向量。通常,正确实现的STL向量和动态数组之间是否存在显著的性能差距,arrays,c++11,new-operator,stdvector,dynamic-arrays,Arrays,C++11,New Operator,Stdvector,Dynamic Arrays,谢谢不,stl向量是动态数组上的薄薄包装 基本上,新的和删除在C++中已经过时了,除了实现STL容器本身的代码之外。您应该优先使用std::vector,而不是手动管理的动态数组。没有性能差异* std::vector已被仔细指定为可在安全使用的动态数组中实现,公开完全相同的功能等等 [*]除了昂贵的移动/复制/默认构造类型,其中std::vector胜过新的昂贵[N],因为它只使用vector::reserve分配空间,昂贵的的构造会在以后进行。可能他们习惯使用新的[]并且不熟悉STL:)如果

谢谢

不,stl向量是动态数组上的薄薄包装

<>基本上,新的和删除在C++中已经过时了,除了实现STL容器本身的代码之外。您应该优先使用std::vector,而不是手动管理的动态数组。

没有性能差异*
std::vector
已被仔细指定为可在安全使用的动态数组中实现,公开完全相同的功能等等


[*]除了昂贵的移动/复制/默认构造类型,其中std::vector胜过
新的昂贵[N]
,因为它只使用
vector::reserve
分配空间,
昂贵的
的构造会在以后进行。

可能他们习惯使用新的[]并且不熟悉STL:)如果您不使用vector的自动增长功能(只能手动使用new[]实现),而只是保留(…)空间并将其用作数组,那么在发布配置中,vector几乎与使用new[]分配的内存相同。在调试模式下,它打开索引验证,这自然会带来性能成本,但有助于调试。