我想知道c ++动态数组和STL向量的性能有多大差异。我知道它完全取决于你的代码以及你如何构造你的向量,例如没有利用std :: vector :: reserve和使用std :: vector :: push_back构造向量可能导致性能不佳。但是,我不明白为什么有人会选择动态数组(使用operator new [])而不是谨慎使用向量。一般来说,正确实现的STL向量和动态数组之间是否存在显着的性能差距?
由于
答案 0 :(得分:1)
不,stl向量是动态数组的薄包装。
基本上新的和删除在C ++中已经过时了,除了实现stl容器本身的代码。您应该优先使用std :: vector而不是手动管理的动态数组。
答案 1 :(得分:0)
std::vector
已被仔细指定为可安全使用的动态数组,暴露完全相同的功能等等。
[*]除了昂贵的移动/复制/默认构造类型,其中std :: vector 胜过而不是new Expensive[N]
,因为它只用vector::reserve
分配空间, Expensive
的构造稍后发生。