我有以下课程Sample。说,我想使用成员变量var
执行一些繁重的计算,并缓存结果,以防我再次进行相同的计算。我还保证非缓存变量var
是const,如果不是,我想在编译时出错。因此,我想做的就是以仅接受heavy_compuation
的突变的方式对cache
进行常量化。有什么办法可以做这种事情?
#include<iostream>
#include<map>
class Sample
{
public:
Sample(int var_) : var(var_){}
std::map<int, int> cache;
int var;
int heavy_computation(int x)
{
std::map<int, int>::iterator iter = cache.find(x);
if(iter == cache.end()){ // cache doesn't exist
int y = var + x;
cache[x] =y;
return var;
}
std::cout << "cached one" << std::endl;
return iter->second;
}
};
int main(){
Sample s(0);
s.heavy_computation(1);
s.heavy_computation(1);
}