下标值不是索引变量上的数组、指针或向量

问题描述 投票:0回答:1

我在所有 [i] 实例上收到上述标题为“下标值不是数组、指针或向量”的错误,并且似乎无法理解原因。我最近用向量完成的另一个程序似乎没有任何明显的差异并且工作正常。有人看到我错过了什么吗?

#include <iostream>
#include <string>
#include <vector>
using namespace std;



int getData(){
    vector<int> weeklyScore(16, 0);
    for (int i=0; i < 16; i++){
        cout << "Enter quiz score (0-15) for week " << i+1 << " : " << endl;
        cin >> weeklyScore[i];
        if (weeklyScore[i] < 0 || weeklyScore[i] > 15){
            cout << "Please enter a valid score (0-15): " << endl;
            i--;
        }
     }
    for (int i=0; i<16; i++) {
        cout << "Module "<< i+1 << ": " << weeklyScore[i] << endl;
    }
    return 0;
}

int highScore(){
    auto weeklyScore = getData();
    int high=0;
    int i;
    int high;
    for(i=0;i<16;i++)
        if (weeklyScore[i] > high){
            high = weeklyScore[i];
            ihigh = i;
         }
cout << "The highest score is " << high << " in module "<< ihigh+1 << endl;
return 0;
 }

 int lowScore(){
    auto weeklyScore = getData();
    int low=16;
    int i;
    int ilow;
    for(i=0;i<16;i++)
        if (weeklyScore[i] < low){
            low = weeklyScore[i];
            ilow = i;
        }
cout << "The lowest score is " << low << " in module "<< ilow+1 << endl;
    return 0;
}

int ave(){
    auto weeklyScore = getData();
    int i;
    int average;
    int sum=0;
    for(i=0;i<16;i++)
        sum = sum + weeklyScore[i];

    average = sum/16;
    return 0;
}

int main() {
    highScore();
    lowScore();
    ave();
    return 0;
 }
c++ vector subscript
1个回答
0
投票
int getData(){
    ...
    return 0;
}

auto weeklyScore = getData();

由于某种原因,您使

getData
返回
int
,因此编译器确定
auto
中的
auto weeklyScore
也是
int
,而不是您想要的向量。

只需更改

getData
即可返回向量

vector<int> getData(){
    ...
    return weeklyScore;
}
© www.soinside.com 2019 - 2024. All rights reserved.