1. 程式人生 > >C++11: 使用 lambda 建立模板類 的 物件

C++11: 使用 lambda 建立模板類 的 物件

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 可以被返回值優化掉。