我正在考虑一般情况,以下只是遇到的一个简单示例,该示例很容易处理,但唤起了我的想法。
例如,我正在使用的sort()功能<algorithm>。而不是将函数定义为
bool cmp (int n1, int n2)
{
return n1 > n2;
}
Run Code Online (Sandbox Code Playgroud)
和
sort (arr, arr + N, cmp);
Run Code Online (Sandbox Code Playgroud)
在主函数中,我想知道是否可以将指针传递给运算符>,就像将指针传递给函数,排序函数一样。如果是这样,我该如何实施?
Rei*_*ica 43
您无法获得指向内置运算符的指针。但是幸运的是,标准库为所有标准运算符提供了功能对象。在您的情况下,该对象的名称为std::greater:
sort (arr, arr + N, std::greater<int>{});
Run Code Online (Sandbox Code Playgroud)
从C ++ 14开始,您甚至可以省略参数类型,并将根据对象的使用方式推导出该参数类型:
sort (arr, arr + N, std::greater<>{});
Run Code Online (Sandbox Code Playgroud)
从C ++ 17开始,<>也可以省略空:
sort (arr, arr + N, std::greater{});
Run Code Online (Sandbox Code Playgroud)