我想循环遍历一个最大值为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... }
我想我也很困惑如何在最后获得每个类别的总计数.但在大多数情况下,它如何迭代这个数组.我知道sizeof(scores [])不会工作,因为这会给我int大小而不是数组本身的长度.提前谢谢!
解决方法
如果使用std :: vector(
link),则可以添加元素并使向量动态更改大小.可以使用size()方法轻松查询该大小.如果你使用这样的数组,你必须自己跟踪它中的元素数量.
如果你有一个带有元素的向量文件,你的循环可能如下所示:
std::vector<int> scores; // fill vector for (unsigned int i=0; i<scores.size(); i++) { // use value }
如果你必须使用数组并且实际上有一个scoreCount变量,其中包含了实数值,只需在循环中使用它:
for (int i=0; i<scoreCount; i++) { // use value }
正如我在评论中提到的,第三个选项是使用您从未使用的值(通常为-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++; }