如何使用地图或矢量进行C++记忆,用于任意数量的输入

How to do memoization in C++ using maps or vectors for arbitrary number of inputs?

本文关键字:记忆 用于 任意数 输入 C++ 地图 何使用      更新时间:2023-10-16

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

所以,我想尝试一些更动态的东西,也许使用地图或矢量或其他东西(无论你们推荐什么)。

就像我有一个功能:

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

我该怎么做?

您可以使用

mappair<pair<long long, long long>, long long>映射到long long

如果你想检查密钥是否存在,只需使用 find()。使用重载运算符可以安全地分配和访问您确认存在于映射中的密钥[]

编辑

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