对“等级”的引用含糊不清

时间:2018-06-18 04:13:54

标签: c++11 compiler-errors

我努力想弄清楚我的错误在哪里!我的功能在这里:

#include <iostream>
#include <algorithm>
using namespace std;
bool lessThan(int a , int b) {   return (a<b);   }

int rank(int a[] , int n , int value , int lo , int hi) {
    if(lo > hi)  return -1;
    int mid = (lo + hi) / 2;
         if(value < a[mid]) return rank(a , n , value , lo , mid - 1); 
    else if(value > a[mid]) return rank(a , n , value , mid + 1 , hi);
    else return mid;
}

int rank(int a[] , int n , int value) {
    sort(a , a + n , lessThan);
    return rank(a , n , value , 0 , n - 1);
}

检查数组是否包含值是一个函数。我以为我将数组传递给rank()的方式错误,所以我尝试了这个:

void test(int a[] , int n) {
         for(int i = 0 ; i < n ; ++i) cout << a[i];
    }

但它起作用并让我如此困惑。请告诉我我的错误在哪里。

1 个答案:

答案 0 :(得分:2)

使用-std=c++03模式编译代码或更改rank名称,因为从c ++ 11开始,库中有rank结构 - rank。您可以删除using namespace std;行以避免此错误,但是您需要在每次调用标准库函数之前添加std ::前缀,即std :: sort。