我知道如何创建一个充当自定义地图比较器的函数:
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;
}
答案 0 :(得分:2)
您有几种选择:
在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);
如果函数是非静态函数,请创建一个静态包装器,成员或非成员,并从中调用成员函数。