例えばあるvectorに格納された値の最大値maxValueを求めるコードの一例は以下のようになります。
c++
1vector<int> vec{1, 2, 3}; 2int maxValue = 0; 3for (int i=0; i<vec.size(); i++) { 4 if (vec[i] > maxValue) { 5 maxValue = vec[i]; 6 } 7}
しかし、if文の条件式中と代入処理の2つの行でvec[i]を参照しています。
vec[i]の参照を1度で済ませたいなら以下のようになります。
c++
1for (int i=0; i<vec.size(); i++) { 2 int v = vec[i]; 3 if (v > maxValue) { 4 maxValue = v; 5 } 6}
vectorの要素の参照はO(1)なので特に上記2つのコードにおいて性能の差はほとんどないと思うのですが、感覚的に後者のほうが良い気がして、その書き方をしています。
サイズの大きなvectorのある要素の参照を何度も行った時にバグが発生した経験があるからです。
(質問)
上記2コードに性能差はあるか。どちらの記法が適当か。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー