コード
例えば以下のようなlistの最大値と最小値を更新する
処理があったとき
C
1void update_min(){ 2 auto min = list[0]; 3 4 for (int i = 0; i < list.size(); i++) 5 { 6 if (min > list[i]){ 7 min = list[i]; 8 } 9 } 10} 11 12void update_max(){ 13 上記と同じような処理 14}
と
C
1void update_min_max(){ 2 auto min = list[0]; 3 auto max = list[0]; 4 5 for (int i = 0; i < list.size(); i++) 6 { 7 if (min > list[i]){ 8 min = list[i]; 9 } 10 11 if (max < list[i]){ 12 max = list[i]; 13 } 14 } 15}
質問
上記の2つのコードではどちらがベストな記述でしょうか。
今回は極端な例でfor文1つであまり変わらなさそうだと思いますが、データ量やfor文のネストが深くなった場合、前者はアクセス回数が増えたり記述量が増えたり無駄が多いなと思いました。しかし見直した時のわかりやすいとも思いました。
どのような場合でどちらの記述が、もしくはこれ以外の最適な記述等、ご教授ください。
質問に例として挙げられている関数に引数が指定されていませんが、実際に引数はなくてlistはグローバル変数ということでしょうか?それとも引数を省略して書かれていて実際には引数でlistを渡しているということでしょうか?
どちらであるかによって判断基準は変わってくると思います。
回答2件
あなたの回答
tips
プレビュー