C++11: 使用 lambda 建立模板類 的 物件
阿新 • • 發佈:2019-01-27
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 可以被返回值優化掉。