如何修复“操作符不匹配[]”错误(C ++)

Alp*_*pha 2 c++

所以我得到了这个数组: int arr[] = {60,70,30,15,17,80,16,75,90,85,40,75};

我必须在数组的总和小于500的同时“拟合”尽可能多的元素(基本上删除最大的元素,直到总和小于500)。

这是我尝试过的:

#include <iostream>
#include <algorithm>
#include <list>

using namespace std;

int largestOfArray(int number[]);

int main()
{
    int sum = 0;
    int i = 0;
    int arr[] = {60,70,30,15,17,80,16,75,90,85,40,75};
    list<int> ar(arr,arr+12);

    for (i = 0; i < 12;i++) 
        sum += arr[i];

    while (sum > 500)
        ar.remove(largestOfArray(arr[12]));

    for (i = 0; i < 12;i++)
        sum += arr[i];

    for (i = 0;i < 12; i++)
        cout << arr[i];

    cout << sum;
    return 0;
}

int largestOfArray(int number[12]){
    int i = 0;
    int largest = number[0];
    for (i = 0;i < 12;i++){
        if (largest < number[i]) largest = number[i];
    }
    return largest;
}
Run Code Online (Sandbox Code Playgroud)

我不断收到此错误:

与“ operator []”不匹配(操作数类型为“ std :: __ cxx11 :: list”和“ int”)

我知道它与有关,ar.remove(largestOfArray(ar[12])); 但我不知道如何解决。

dav*_*uda 5

首先,您同时使用ararrarr而是数组和ar列表。这既使读者困惑,又使代码作者感到困惑。

在C ++中,std :: list没有随机访问权限。您不能使用ar[],因为未为列表定义operator []。此外,largestOfArray需要一个数组,而不是一个列表。您可能打算在arr那里使用而不是ar