如何使用地图或矢量进行C++记忆,用于任意数量的输入
How to do memoization in C++ using maps or vectors for arbitrary number of inputs?
我尝试使用数组,但我不需要每个元素,所以它不会编译,因为我的边界太大了。
所以,我想尝试一些更动态的东西,也许使用地图或矢量或其他东西(无论你们推荐什么)。
就像我有一个功能:
long long func(long long arg1, long long arg2, long long arg3){
check if [arg1, arg2, arg3] is memoized, and if it is, return it
....function body...
store return value with [arg1, arg2, arg3] in memoization cache
return value;
}
我该怎么做?
您可以使用
map
将pair<pair<long long, long long>, long long>
映射到long long
。
如果你想检查密钥是否存在,只需使用 find()。使用重载运算符可以安全地分配和访问您确认存在于映射中的密钥[]
。
编辑
或者,您可以定义自己的结构,其中包含 3 个long long
键,并定义它们的自然顺序(以便map
正常工作)。然后,您可以避免冗长的pair
语法。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 用于访问容器<T>数据成员的正确 API
- 重载操作程序时出错>>用于类中的字符串 memebr
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- C++中的cin.ignore()函数不适用于整个流
- 没有用于初始化C++中的变量模板的匹配构造函数
- 用于C++中带有数组和指针的循环
- 为什么它不适用于Visual 2019的原因
- 使用在用于SFINAE的void_t中具有参数的方法
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 重载==不适用于二进制树
- Insert函数不适用于2 if语句C++
- 用于矢量处理的多个线程
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 为什么模数运算符不适用于该代码
- 松弛原子与无同步情况下的记忆连贯性
- 并行用于C++17中数组索引范围内的循环
- 如何使用地图或矢量进行C++记忆,用于任意数量的输入