我遇到错误,无法将int *转换为int,但是我无法弄清楚是什么原因引起的

时间:2020-04-22 21:29:45

标签: c++

#include <bits/stdc++.h>

using namespace std;

int main() {

    int n; 
    cin >> n;

    int cows[n];
    for (int i = 0; i < n; i++) {
        cin >> cows[i];
    }

    int lowBound;
    int upBound;

    sort(cows, cows + n);

    int ans = 0; 

    for (int i = 0; i < n-2; i++) {
        for (int j = i + 1; j < n-1; j++) {
            lowBound = lower_bound(cows + j + 1, cows + n, 2 * cows[j] - cows[i]);
            upBound = upper_bound(cows + j + 1, cows + n, cows[j] + 2*(cows[j] - cows[i]));
            if (lowBound == 9) {
                continue;
            }
            if (upBound == n) {
                upBound = n - 1;
            }
            ans += upBound - lowBound + 1;
        }
    }

    return 0;
}

我收到错误“从int *到int [-fpermissive]的无效转换”。但是,我不知道是什么原因导致的,我看不到使用int应该指向的指针的位置。

(我知道我正在使用不推荐使用的东西,例如#include <bits/stdc++.h>,并使用命名空间std ;,但是请在您告诉我还有其他更改之前,先帮助解决错误,除非它与错误)

1 个答案:

答案 0 :(得分:2)

您应该取消引用迭代器:

v-if="validate"

作为lowBound = *lower_bound(cows + j + 1, cows + n, 2 * cows[j] - cows[i]); upBound = *upper_bound(cows + j + 1, cows + n, cows[j] + 2*(cows[j] - cows[i])); 返回一个迭代器而不是一个值。