C++自定义sort()比较函数,涉及静态成员函数和Lambda表达式,整型转字符串型,输入一组整数压入vector

本文介绍了如何在C++中解决sort()函数自定义比较时遇到的问题,包括静态成员函数的使用和Lambda表达式的应用。通过将整数转换为字符串,实现了对一组非负整数的排序,使其成为最大数。涉及知识点包括整型转字符串的两种方法(to_string和stringstream),以及如何编写输入程序向vector中添加整数。
摘要由CSDN通过智能技术生成

要实现以下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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值