关于testSort 参数列表中 void(*sort)(T[],int)的问题

来源:2-4 测试算法的性能

SD_Kaden

2018-05-17

我用老师您的代码原样打印下来,但会报错,反复测试后,觉得问题在函数调用上,即

testSort(参数列表) 参数列表中的 void(*sort)(T[],int)导致的,


相关的测试代码:

template<typename T>

void selectionSort(T arr[],int n)

{

for(int i=0;i<n;i++)

{

int index=i;

for(int j=i+1;j<n;j++)

if(arr[j]<arr[index]) 

index=j;

swap(arr[i],arr[index]);

}


}//在testSort 之前直接定义


template<typename T>

void testSort(string sortName,T arr[],int n)

{

clock_t startTime=clock(); 

    selectionSort(arr,n);  //直接地调用selectionSort函数


clock_t endTime =clock();


cout<<sortName<<" : "<<double(endTime - startTime)/CLOCKS_PER_SEC<<"s"<<endl;

return;


}

像上面那段调用就不会出错,但void(*sort)(T[],int)的调用 ,C++ 会报错:error C2896: 'void __cdecl sortTestHelper::testSort(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,void (__cdecl *)(T [],int),T [],int)' : cannot use function template 'void __cdecl selectionSort(T [],int)' as a function argument


这是不是 还是和 使用的编译器 是 VC6.0 有关?



写回答

1回答

liuyubobobo

2018-05-17

对!建议不要使用VC6。VC6支持的C++标准过于老旧。可以参考这里:https://coding.imooc.com/learn/questiondetail/49015.html :)

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11186 学习 · 1614 问题

查看课程