在我的代码中我现在有类似的东西
Foo bar;
std::unordered_set<Foo>::iterator minElement =
std::min_element(std::begin(mySet),
std::end(mySet),
[&bar](Foo const &lhs, Foo const &rhs) {
return bar.myWeakLessOperator(lhs, rhs);
});
我想知道是否存在通过直接传递成员函数 myWeakLessOperator
(不是静态的)而不是编写一个 lambda 函数来进行调用来简化它的方法。
我想得到类似的东西
Foo bar;
std::unordered_set<Foo>::iterator minElement =
std::min_element(std::begin(mySet),
std::end(mySet),
/* something that rely to */ bar.myWeakLessOperator);
知道是否可行以及如何实现吗?
最佳答案
一个可能的解决方案是使用满足 Compare 的结构Foo 内部:
class Foo
{
public:
struct WeakLessOperator
{
bool operator()(const Foo& a, const Foo& b)
{
// implementation - take care of meeting requirements of Compare
return true;
}
};
WeakLessOperator myWeakLessOperator;
};
Foo bar;
auto minElement =
std::min_element(std::begin(mySet),
std::end(mySet),
bar.myWeakLessOperator);
关于c++ - 传递一个成员函数作为 C++ 标准库算法的比较运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53325193/