C++ 闭包

C++ 闭包

这几天看数据结构课程设计,有个题目,要求写出各种排序并比较他们的交换次数,这个时候就想起了闭包

C++的闭包可以用lambda表达式实现,如下

/*
* 根据类型生成swap闭包
* 自带计数器, 每个函数调用这个SWAP
*/
template <typename Type>
std::function<int(Type&, Type&)> swaper() {
auto lam = [](Type& val1, Type& val2)-> int {
static int cnt(0);
Type tmp = std::move(val1);
val1 = std::move(val2);
val2 = std::move(tmp);
return ++cnt;
};
return lam;
}

lam返回自己被调用的次数。

不过这个东西…好像没我想的好用…建议还是用实现了重载()的class吧…