c++ - 如何将方法的值保留在类内部的内存中?
问题描述
假设我有一个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);
}
解决方案
如评论中所述,创建一个您已经计算过的结果的映射,首先检查它是否在那里,如果没有,计算它,存储它,然后返回它。
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;
}
但是,如果您的回调不慢或者您没有获得很多缓存命中,这可能会使您的程序变慢。
推荐阅读
- bazel - 我可以为 go_tests 设置默认 test_arg 并从 CLI 覆盖吗?
- sqlite - SQLite,条件总和
- azure - DSVM 中的 TensorFlow 优化
- css - Chrome中未对齐的有序列表项
- excel - 使用 Excel VBA 比较和执行功能
- python - 自定义 python 脚本(anki 插件)
- kubernetes - 迁移到 Kubernetes
- python - Pygame:如何将图像添加到矩形?
- oracle-apex - Oracle Apex 背景图像显示
- postgresql - F# 使用 Postgres 连接 SQLProvider