使用C ++向量而不是C数组的性能损失

时间:2009-09-19 02:34:47

标签: c++ arrays vector std

使用C ++中的标准库中的向量而不是C中的数组是否存在性能损失?

2 个答案:

答案 0 :(得分:7)

不,没有(如果您使用优化进行编译以便可以进行内联),前提是您使用malloc获得动态大小的C“数组”。

C中的固定大小的数组具有轻微的优势,即它们的地址在链接(如果是全局)之后是固定的,或者它们直接存在于堆栈上而不是间接地通过指向堆上某处的指针。我相信仍然没有性能差异;常数基地址不比变量地址快;两者都被加载到CPU寄存器中。

答案 1 :(得分:1)

唯一真正的区别是使用std :: vector的访问通过简单的函数。只要您使用适当的优化级别以使这些函数调用内联,它们就会相同。