使用带比较器功能的qsort

时间:2011-10-07 12:13:36

标签: c++ qsort

我知道来自c库的qsort并且我用chars和整数实现了它(从const void *形式转换为相关形式)但是现在我实现的代码在给定的句子中给出了最长的重复这里是简单的比较函数

int pstrcmp(char **p,char **q){
    return strcmp(*p,*q);

}

我希望像qsort一样在

中使用它
qsort(a,n,sizeof(char *),pstrcmp);(a is array of strings)

当我直接写,它写的是不兼容和儿子,显示我的错误,请帮我纠正它

错误就是这个

  

2 IntelliSense:类型为“int(*)(char ** p,char ** q)”的参数为   与“int(__ cdecl *)”类型的参数不兼容(const void *,   const void *)“c:\ users \ datuashvili \ documents \ visual studio   2010 \ projects \ duplicate_strings \ duplicate_strings \ duplicates_strings.cpp 32 27 duplicate_strings

1 个答案:

答案 0 :(得分:4)

您需要为比较器功能提供正确的功能签名,然后在内部进行转换,例如

int pstrcmp(const void * p, const void * q)
{
    const char **ps = (const char **)p;
    const char **qs = (const char **)q;

    return strcmp(*ps, *qs);
}