写了个二分查找函数如下:
template
int BinSearch(T& array,int target){
int low=0,high=sizeof(array)/sizeof(array[0])-1;
while(low<=high){
if(array[low]==target)
return low;
if(array[high]==target)
return high;
int mid=low+(high-low)/2;
if(array[mid]==target)
return mid;
if(array[mid]
low=mid+1;
else
high=mid-1;
}
return -1;
}
第一行和第二行如果写成
int BinSearch(int array[],int target)
那么传进来的就是array的指针,导致high计算错误
但是不明白模板template做了什么,让原来的array作为引用传进去了
如果用int& array[]就不行,提示的是不能引用数组
如果不用template怎么写呢?