我有一个数组,例如ARR,并且ARR中的对象总数是已知的。 我想将ARR中每个对象的属性复制(放入)STL向量,如VEC。STL向量回推与设定值之间的性能差异
一种方式是通过ARR迭代
VEC.pushback(ARR[i].att);
另一种方式是
VEC.resize(ARR.size());
VEC[i] = ARR[i].att;
做他们做出关于运行时的性能差异?哪一个更好?谢谢。
后续行动:我想为有兴趣的人提供一些实验结果。 我试图通过将50000个整数放入STL向量来调整(1)resize()+'='和(2)reserve()+ push_back()方法。
(1) takes 0.000201s;
(2) takes 0.000229s.
- 两者都使用g ++编译-O3,我运行程序几次。
- (1)一直优于(2)。
- (1)有额外的分配,因此在空间方面需要更多的内存。
这最快的方式这是一个糟糕的问题 - 你可以简单地通过测量来自己回答。问*哪个更好*总是主观的。 –
@BjörnPollex它为什么是主观的?我希望代码能够快速运行,不仅适用于我自己。 –
@ jason.Z然后使用'push_back'或'emplace_back'。它更习惯。只有在投放后才担心这些事情的表现。 – Pubby