我努力想弄清楚我的错误在哪里!我的功能在这里:
#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];
}
但它起作用并让我如此困惑。请告诉我我的错误在哪里。
答案 0 :(得分:2)
使用-std=c++03
模式编译代码或更改rank
名称,因为从c ++ 11开始,库中有rank
结构 - rank。您可以删除using namespace std;
行以避免此错误,但是您需要在每次调用标准库函数之前添加std ::前缀,即std :: sort。