如何使用地图或向量对任意数量的输入进行C ++中的memoization?

时间:2012-06-20 03:16:22

标签: c++ memoization

我尝试使用数组,但我不需要每一个元素,所以它不会编译因为我的界限太大了。

所以,我想尝试一些更有活力的东西,可能是使用地图或矢量或其他东西(无论你推荐什么)。

就像我有一个功能:

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;
  }

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以使用mappair<pair<long long, long long>, long long>映射到long long

如果您想检查密钥是否存在,请使用find()。通过[]重载运算符,可以安全地完成分配和访问您确认的密钥。

修改

或者,您可以定义包含3个long long键的自己的结构,并定义它们的自然顺序(使map正常工作)。然后,您可以避免冗长的pair语法。