STL向量与动态数组

时间:2017-06-02 14:01:45

标签: arrays c++11 new-operator stdvector dynamic-arrays

我想知道c ++动态数组和STL向量的性能有多大差异。我知道它完全取决于你的代码以及你如何构造你的向量,例如没有利用std :: vector :: reserve和使用std :: vector :: push_back构造向量​​可能导致性能不佳。但是,我不明白为什么有人会选择动态数组(使用operator new [])而不是谨慎使用向量。一般来说,正确实现的STL向量和动态数组之间是否存在显着的性能差距?

由于

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

没有性能差异*

std::vector已被仔细指定为可安全使用的动态数组,暴露完全相同的功能等等。

[*]除了昂贵的移动/复制/默认构造类型,其中std :: vector 胜过而不是new Expensive[N],因为它只用vector::reserve分配空间, Expensive的构造稍后发生。