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<>{});