我试图了解泛型函数如何工作, 让它成为最简单的例子,如果我想要一个函数,返回max 或 min - 根据用户的选择, 有可能这样做:
void f(void* a, void* b, void *(comp)(void* a, void* b), void* result){
////does something////
}
或者我必须发送一些密钥作为参数还是有另一种方法? 谢谢
答案 0 :(得分:0)
像这样调用这个函数:
void* mincmpi (void* a, void* b) {
return (*(int*)a < *(int*)b)? a: b;
}
//...
f (a, b, &mincmpi, res);
在某些时候f里面调用comp:
result = *comp (a, b);
当然可以。这种比较器的一种情况是对序列进行排序。您可以通过函数指针指定排序顺序。虽然我建议你不要使用void *,如果你真的没有。