我有一個數組,例如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