呵呵仙8 发表于 2023-12-1 00:42:50

c++要如何表达回调函数的?例std::sort第三个参数


c++要如何表达回调函数的?例如std::sort第三个参数改为利用子程序指针把两个要对比的值,传入要回调函数中去?!

<火山程序 类型 = "通常" 版本 = 1 />

方法 _A码文本数组排序 <静态>
参数 A码文本数组 <类型 = 变整数>
参数 数组成员个数 <类型 = 整数>
参数 从小到大排序 <类型 = 逻辑型 注释 = "为真表示从小到大进行排序,为假表示从大到小进行排序." @默认值 = 真>
参数 回调函数 <类型 = 变整数>
{
    @ INT_P*变整数数组指针 = (INT_P*)@<A码文本数组>;
    @ if (@<从小到大排序>)
    @   std::sort(变整数数组指针, 变整数数组指针 + @<数组成员个数>, [](INT_Plhs, INT_Prhs) { return strcmp((const char *)lhs, (const char *)rhs) < 0; });
    @ else
    @   std::sort(变整数数组指针, 变整数数组指针 + @<数组成员个数>, [](INT_Plhs, INT_Prhs) { return strcmp((const char *)lhs, (const char *)rhs) > 0; });
}


Xelloss0618 发表于 2023-12-1 09:14:49

不是一定要用匿名函数的

<火山程序 类型 = "通常" 版本 = 1 />

方法 _A码文本数组排序 <静态>
参数 A码文本数组 <类型 = 变整数>
参数 数组成员个数 <类型 = 整数>
参数 回调函数 <类型 = 变整数>
{
    @ INT_P* 变整数数组指针 = (INT_P*)@<A码文本数组>;
    @ std::sort(变整数数组指针, 变整数数组指针 + @<数组成员个数>, reinterpret_cast<bool(WINAPI*)(INT_P, INT_P)>(@<回调函数>));
}

方法 比较函数 <静态 类型 = 逻辑型 注释 = "返回参数1小于参数2是降序排序" 注释 = "返回参数1大于参数2是升序排序">
参数 参数1 <类型 = 变整数>
参数 参数2 <类型 = 变整数>
{
    返回 (参数1 < 参数2)
}

呵呵仙8 发表于 2023-12-1 12:32:14

感谢大神帮忙解答!会c++就是爽!学C++还真是太难了.头都大!!

weilai 发表于 2023-12-1 12:34:25

其实火山这么快,自己写个排序速度也是非常快的

weilai 发表于 2023-12-1 12:34:25

其实火山这么快,自己写个排序速度也是非常快的

weilai 发表于 2023-12-1 12:34:25

其实火山这么快,自己写个排序速度也是非常快的
页: [1]
查看完整版本: c++要如何表达回调函数的?例std::sort第三个参数