【发布时间】:2011-07-18 05:03:47
【问题描述】:
我找到了包含此代码的an article:
template <typename ReturnType, typename... Args>
std::function<ReturnType (Args...)>
memoize(std::function<ReturnType (Args...)> func)
{
std::map<std::tuple<Args...>, ReturnType> cache;
return ([=](Args... args) mutable {
std::tuple<Args...> t(args...);
if (cache.find(t) == cache.end())
cache[t] = func(args...);
return cache[t];
});
}
你能解释一下吗?这里很多东西我看不懂,但最奇怪的是缓存是本地的,不是静态的,但也许我错了……
【问题讨论】:
-
固定代码格式。在 SO 上,您通过缩进四个空格来表示代码,
<code>和<pre>标记用处不大。 -
@Ben 谢谢!我以前用过那个标签,没问题:)
标签: c++ c++11 lambda memoization