K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
已知以下代码意图计算vector<int> arr中所有元素的和,但存在边界错误:
int calcSum(const vector<int>& arr) { int sum = 0; for(int i = 0; i <= arr.size(); ++i) { sum += arr[i]; } return sum; }
请选择正确的处理与优化方案:
原代码没有边界错误,仅需要将循环条件改为i < arr.size()即可正确运行
i < arr.size()
将arr.size()提前到循环外部存储为局部变量len,同时将循环条件改为i < len,可同时修复边界错误并优化性能
arr.size()
len
i < len
将循环条件改为i <= arr.size() - 1即可修正边界错误,无需其他修改
i <= arr.size() - 1
为优化性能,可以将循环体中的sum += arr[i]移到循环外部,仅执行一次即可完成计算
sum += arr[i]