C++ 中 lambda 可以直接传递给模板函数如 std::sort, 但无法传给模板类如 std::map,但是,使用一点小技巧,可以使用 lambda 创建模板类的对象,省了很多麻烦的 coding。这里给出一个示例:
#include <stdio.h> #include <map> template<class Key, class Value, class Compare> std::map<Key, Value, Compare> make_map(Compare comp) { return std::map<Key, Value, Compare>(comp); } int main() { auto m = make_map<int,int>([](int x, int y) { return x < y; }); m[1] = 11; m[2] = 22; for (auto x : m) { printf("%d->%d\n", x.first, x.second); } return 0; }
make_map 可以被返回值优化掉。