要实现以下sort()的三参数自定义用法,结果报错,如下:
经查询:
sort()定义:
void sort(排序首地址,排序末地址+1,比较函数名称);
//比较函数:
bool compare(参与比较的第一个元素,参与比较的第二个元素)
{
return 1st>2nd;//降序,大数在前
//return 1st<2nd;//升序,小数在前
}
注意:sort()要求函数对象是 ,静态/全局函数指针,非静态成员函数指针不能直接传递给std::sort()。
所以报错原因:自定义比较函数放在类内,但是没有设置它为静态成员函数。
解决方案:类内——加上static关键字,设置为静态成员函数;类外——全局函数。
记录类成员函数程序,以及输入输出完整程序。
例子程序是实现,重新排列一组非负整数使之成为最大数。
//自定义sort()函数对象必须是静态或全局函数指针
//可以不写static,直接放类外,做全局
bool compare(const string& s1,const string& s2){
string str1=s1+s2;
string str2=s2+s1;
return str1>str2;//自定义比较函数,返回大的字符串
}
class Solution {
public:
string largestNumber(vector<int>& nums) {
if(nums.empty())return "";
string res;
vector<string>numstr;//整型转化成字符串型,进行拼接比较
for(