是否有用于“缓存计算”/“缓存 getter”的通用模式或现成的 boost 类?
我的意思是这样的:
class Test{
public:
Value getValue() const;
protected:
Value calculateValue() const;//REALLY expensive operation.
mutable bool valueIsDirty;
mutable Value cachedValue;
}
Value Test::getValue() const{
if (valueIsDirty){
cachedValue = calculateValue();
valueIsDirty = false;
}
return cachedValue;
}
我可以使用std::pair<Value, bool>
并变成宏,但是如果值依赖于其他值(存储在其他类中)并且这些值也可以被缓存getValue/calculateValue
,这并没有真正的帮助。
这种“模式”有现成的解决方案吗?目前我手动处理这些缓存值,但这不是“漂亮”。
限制:
c++03 标准。允许升压。