在c ++中循环遍历数组

use*_*577 7 c++ arrays loops count

我想循环遍历一个最大值为1000的数组.我使用文本文件中的值填充数组.我试图循环遍历该数组,但在我的for循环中,我不知道数组的长度,所以我不知道在for循环语句的第二部分放什么.例如:我有一个名为的数组:int scores[1000];我正在尝试迭代这个数组并将分数放在成绩类别中.所以A = 90-100,B = 80-89,C = 70-79,D = 60-69,F = 0-59.

所以我不知道我的for循环会是什么样子:

for(int i = 0; i < ...; i++){

if(scores[i] > = 90 || scores[i] <= 100){

//Do stuff...

}
Run Code Online (Sandbox Code Playgroud)

我想我也很困惑如何在最后获得每个类别的总计数.但在大多数情况下,它如何迭代这个数组.我知道sizeof(scores [])不会工作,因为这会给我int大小而不是数组本身的长度.提前谢谢!

Vic*_*and 6

如果使用std::vector(链接),则可以添加元素并使向量动态更改大小.使用该size()方法可以轻松查询该大小.如果你使用这样的数组,你必须自己跟踪它中的元素数量.

如果你有一个带有元素的向量文件,你的循环可能如下所示:

std::vector<int> scores;
// fill vector

for (unsigned int i=0; i<scores.size(); i++) {
  // use value
}
Run Code Online (Sandbox Code Playgroud)

如果你必须使用数组并且实际上有一个scoreCount带有实数值的变量,那么只需在你的循环中使用它:

for (int i=0; i<scoreCount; i++) {
  // use value
}
Run Code Online (Sandbox Code Playgroud)

正如我在评论中提到的,第三个选项是使用您从未使用的值(通常为-1)初始化整个数组,然后将其用作填充与空数组位置的标记,如下所示:

for (int i=0; i<1000; i++) {
    scores[i] = -1;
}

// add real values to scores 

int i=0;
while (scores[i] != -1 && i < 1000) {
  // use value
  i++;
}
Run Code Online (Sandbox Code Playgroud)


she*_*ngy 6

实际上sizeof()应该这样做:

sizeof(scores) / sizeof(scores[0])

这将为您提供数组的总元素数.