C ++ 11 std :: set lambda比较函数
我想std::set用自定义比较功能创建一个。我可以使用来将其定义为类operator(),但是我想享受在其中使用lambda的能力,因此我决定在具有std::set作为成员的类的构造函数的初始化列表中定义lambda函数。但是我无法获得lambda的类型。在继续之前,这里有一个例子: class Foo { private: std::set<int, /*???*/> numbers; public: Foo () : numbers ([](int x, int y) { return x < y; }) { } }; 搜索后,我发现了两种解决方案:一种是使用std::function。只需将设置比较函数类型设置为be,std::function<bool (int, int)>然后像我一样完全传递lambda即可。第二种解决方案是编写一个make_set函数,例如std::make_pair。 解决方案1: class Foo { private: std::set<int, std::function<bool (int, int)> numbers; public: Foo () : numbers ([](int x, int y) { return …