排序比较函数
Qsort compare function
void qsort (void* base, size_t num, size_t size,
int (*compare)(const void*,const void*));
为什么qsort函数需要一个int*返回类型的比较,而比较函数是int类型?
int compare (const void * a, const void * b)
{
if ( *(MyType*)a < *(MyType*)b ) return -1;
if ( *(MyType*)a == *(MyType*)b ) return 0;
if ( *(MyType*)a > *(MyType*)b ) return 1;
}
谁能解释一下这个,我的程序不能编译,因为这个。谢谢!代码取自此源代码:http://www.cplusplus.com/reference/cstdlib/qsort/
返回的不是int *
,而是int
。compare
函数指针。您在那里看到的*
将其定义为函数指针。(注意*compare
周围的括号)
cdecl parse of int (*compare)(const void*,const void*))
:
声明compare为指向函数的指针(指向const void的指针,指向const void的指针),返回int
如果它是一个指向返回int *
的函数的指针,这将是形参声明:
int * (*compare)(const void*,const void*))
如果你的代码没有编译,那么它是由于一些其他原因。如果您想要关于编译器错误的更具体的建议,请考虑将错误消息添加到您的问题中(或创建一个新问题)。
相关文章:
- C++自定义比较函数
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- C++模板函数,用于比较任何无符号整数和有符号整数
- 函数类作为比较器
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 没有默认构造函数作为模板参数的自定义比较器
- std::max() 函数与定点实现的比较中的问题
- 如何比较两个函数的速度和性能
- 对没有比较器或λ函数的向量进行排序?
- 使用迭代器的自定义比较器函数
- 隐式转换为比较函数对象(函子)用于 std::sort 而不是 std::map?
- 比较 n 女王的 next_permutation 函数
- 用于基于成员字段或函数创建比较器的快捷方式
- 为什么 std::stable_sort() 的比较函数的参数必须是设置常量?
- 为什么在类或结构中传递自定义比较器函数?
- 浮点数比较为什么没有相等的函数
- 通过默认复制构造函数比较 C++ 字符串是否会影响性能,原因为何?
- 为什么函数比较器不像在排序中那样在优先级队列中工作?
- c++ STL集合的比较函数:比较函数可以是类的成员函数吗?
- 联合值的单函数比较