ARRなどの配列があり、ARR内のオブジェクトの総数はわかっています。ARR内の各オブジェクトの属性をSTLベクトル(VECなど)にコピー(配置)したいと思います。
1つの方法は、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)余分な割り当てがあるため、スペースの観点からわずかに多くのメモリを使用します。