在C++中,sort()函数是标准库中的一个排序算法,用于对容器中的元素进行排序。该函数通过比较元素的大小来确定排序顺序,默认情况下使用<运算符进行比较。
然而,sort()函数对于比较元素的方式是有要求的。它要求比较函数(即cmp函数)必须是一个普通的函数或者静态成员函数,而不能是非静态成员函数。原因在于,非静态成员函数在调用时需要通过对象来调用,并且它包含一个隐含的this指针,用于指向当前对象的地址。而sort()函数需要将比较函数作为一个参数传递给它,它无法传递对象和this指针。
解决这个问题的方法是使用函数指针或者函数对象。可以定义一个全局函数或者静态成员函数作为比较函数,然后将其作为参数传递给sort()函数。另一种方法是使用lambda表达式,将比较函数定义在sort()函数的调用处。
综上所述,不能在C++ sort()中直接使用非静态成员函数cmp,因为它需要以函数指针或者函数对象的形式传递给sort()函数,而非静态成员函数无法满足这个要求。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云