数组元素在for循环中产生不同的值

C++ - Array elements yield different values in for loop

本文关键字:for 循环 数组元素      更新时间:2023-10-16

在头文件(Uni.h)中声明了一个全局int数组,如下所示:

int durationArray[];

我的程序将运行并为数组分配元素(在本例中为2)。但让我感到困惑的是,如果我使用for循环来显示数组元素,和手动使用cout来显示它们时,数组元素会产生不同的值。下面是我的代码:

cout << "durationArray at element 0 is :" << durationArray[0] << endl;
cout << "durationArray at element 1 is :" << durationArray[1] << endl;
int counting=2;             
for (int i=0; i<counting; i++)
{
    cout << "durationArray at element " << i << ": " << durationArray[i] << endl;
}

输出如下:

durationArray at element 0 is :3
durationArray at element 1 is :4

durationArray at element 0: 0
durationArray at element 1: 4

我的最终目标是得到数组元素的和。但是,如果元素值在我使用for循环迭代数组时是错误的,我该如何实现这一点?我计划使用以下代码进行添加:

for (int i=0; i<counting; i++)
    {
        sumofDuration+=durationArray[i];
    } 

使用std::accumulate,就是这么简单:

#include <iostream>
#include <algorithm>
int main() {
  auto array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  std::cout << std::accumulate(std::begin(array), std::end(array), 0);
  return 0;
}

std::for_each带lambda(如果累加器变得复杂,则更灵活):

#include <iostream>
#include <algorithm>
int main() {
  auto array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  int sum { 0 };
  std::for_each(begin(array),end(array),[&](int n){
                        sum += n;  
    });
  std::cout << sum;
  return 0;
}