「C++调试错误」 int (Solution::*) (const void* a, const void* b) 类型的实参与 int (_cdecl::*) (const void* , con

1.问题描述:

C++ qsort() 函数调用时,发生实参与形参不兼容的问题。

 int (Solution::*) (const void* a, const void* b) 类型的实参与 int (_cdecl::*) (const void* , const void* ) 类型的形参不兼容

2.错误原因:

C++函数与C语言函数混用,在某些情况下是不能替换使用的。

3.解决方法:

在主函数之前声明比较函数。注意:C++ 排序尽量使用 sort(),不要使用 C 语言中的 qsort();

//********错误*********//
class Solution {
public: 
  bool IsContinuous(vector<int>  numbers) {
        if (numbers.size() != 5)
            return  false;
        //qsort(&numbers, numbers.size(), sizeof(int),  compare);
        qsort(&numbers[0], numbers.size(), sizeof(int),  compare);
        //sort(numbers.begin(), numbers.end());

        int numZeros = 0;
        int diff = 0;
        for (int i =  0; i < numbers.size() - 1; ++i) {
            if (numbers[i] ==  0)
                ++ numZeros;
            else {
                if  (numbers[i] == numbers[i + 1])
                    return  false;
                diff += numbers[i + 1] - numbers[i] -  1;
            }
        }
        return (numZeros < diff) ? false  : true;
    }
  
  int compare(const void *a, const void *b) {
     return (*(int*)a - *(int*)b);
  }
};


//********正确*********//
int compare(const void *a, const void *b) {
  return (*(int*)a -  *(int*)b);
}



class Solution {
public: 
  bool IsContinuous(vector<int>  numbers) {
        if (numbers.size() != 5)
            return  false;
        //qsort(&numbers, numbers.size(), sizeof(int),  compare);
        qsort(&numbers[0], numbers.size(), sizeof(int),  compare);
        //sort(numbers.begin(), numbers.end());

        int numZeros = 0;
        int diff = 0;
        for (int i =  0; i < numbers.size() - 1; ++i) {
            if (numbers[i] ==  0)
                ++ numZeros;
            else {
                if  (numbers[i] == numbers[i + 1])
                    return  false;
                diff += numbers[i + 1] - numbers[i] -  1;
            }
        }
        return (numZeros < diff) ? false  : true;
    }
  
};

*亲测有效

发布了191 篇原创文章 · 获赞 611 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/Robot_Starscream/article/details/100532880
今日推荐