成员功能作为映射比较器



我知道如何创建一个用作自定义地图比较器的函数:

std::map<std::string, std::string, bool (*)(std::string, std::string)> myMap(MapComparator);
bool MapComparator(std::string left, std::string right)
{
    return left < right;
}

但是我不知道如何使用成员函数做同样的事情:

bool MyClass::MapComparator(std::string left, std::string right)
{
    return left < right;
}

您有以下几种选择:

在 C++11 中,您可以使用 lambda:

std::map<std::string, std::string, bool (*)(std::string, std::string)> myMap(
    [](string lhs, int rhs){ // You may need to put [this] instead of [] to capture the enclosing "this" pointer.
       return MapComparator(lhs, rhs); // Or do the comparison inline
    });

如果函数是静态的,请使用::语法:

class MyClass {
public:
    static bool MyClass::MapComparator(std::string left, std::string right);
};
...
std::map<std::string, std::string, bool (*)(std::string, std::string)> myMap(MyClass::MapComparator);
如果函数是非静态的

,则创建一个静态包装器(成员或非成员),并从中调用成员函数。

相关内容

  • 没有找到相关文章

最新更新