Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以将指向运算符的指针作为参数传递,就像指向函数的指针一样?_C++ - Fatal编程技术网

C++ 是否可以将指向运算符的指针作为参数传递,就像指向函数的指针一样?

C++ 是否可以将指向运算符的指针作为参数传递,就像指向函数的指针一样?,c++,C++,我正在考虑一般情况,以下只是一个简单的例子,很容易处理,但也引起了我的思考。 例如,我正在使用的sort()函数。 而不是将函数定义为 boolcmp(int n1,int n2) { 返回n1>n2; } 及 排序(arr、arr+N、cmp); 在main函数中,我想知道是否可以将指针传递给操作符,就像传递给函数指针一样,传递给sort函数。如果是,如何实现它?您无法获得指向内置运算符的指针。但幸运的是,标准库为所有标准运算符提供了函数对象。在您的例子中,该对象的名称是std::grea

我正在考虑一般情况,以下只是一个简单的例子,很容易处理,但也引起了我的思考。

例如,我正在使用
sort()
函数。 而不是将函数定义为

boolcmp(int n1,int n2)
{
返回n1>n2;
}

排序(arr、arr+N、cmp);

在main函数中,我想知道是否可以将指针传递给操作符
,就像传递给函数指针一样,传递给sort函数。如果是,如何实现它?

您无法获得指向内置运算符的指针。但幸运的是,标准库为所有标准运算符提供了函数对象。在您的例子中,该对象的名称是
std::greater

sort (arr, arr + N, std::greater<int>{});

不能这样做,但可以直接在排序中使用lambda,或者如果需要传递比较器,可以将lambda本身存储在变量中

sort (arr, arr + N, [](int a, int b){ return a > b; });

或者按照建议,您可以使用
std::greater

sort (arr, arr + N, std::greater<>{});
排序(arr,arr+N,std::greater{});
@FrançoisAndrieux谢谢你,但我不仅仅关注这个具体案例。我在考虑一般情况。相关:。
sort (arr, arr + N, [](int a, int b){ return a > b; });
auto comp = [](int a, int b){ return a > b; };
sort (arr, arr + N, comp);
sort (arr, arr + N, std::greater<>{});