首页 > 解决方案 > 如何将方法的值保留在类内部的内存中?

问题描述

假设我有一个function1存储在 class 中的方法cls。如何修改下面的函数,以便如果传递相同的值,则不必调用val1该函数?returnhandle

class cls
{
public:
    void function1(const int& val1, int& val2, int& data);
};

void cls::function1(const int& val1, int& val2, int& data)
{
   int handle;
   handle = returnhandle(val1);
   data = readhandleddata(handle, val2);
} 

标签: c++

解决方案


如评论中所述,创建一个您已经计算过的结果的映射,首先检查它是否在那里,如果没有,计算它,存储它,然后返回它。

class cls
{
    std::map<int, int> data_map;
public:
    void function1(const int& val1, int& val2, int& data);
};

void cls::function1(const int& val1, int& val2, int& data)
{
   int handle;
   auto i = data_map.find(val1); 
   if (i != data_map.end()) {
        return i->second;
   }
   handle = returnhandle(val1);
   data = readhandleddata(handle, val2);
   data_map[val1] = data;
} 

但是,如果您的回调不慢或者您没有获得很多缓存命中,这可能会使您的程序变慢。


推荐阅读