配对作为地图中的键以进行记忆

Pair as a key in map for Memoization

我想让你在函数 f(row, int) 上使用 unordered_map 进行记忆。 不幸的是,我遇到了一个奇怪的编译错误(很长而且很神秘)。

#include <vector>
#include <unordered_map>
#include <utility>


using namespace std;

typedef vector<bool> row;

int main(void) {

    unordered_map< pair<int, row>, int > x;

}

std::unordered_map 的密钥类型需要实现 std::hash,我猜你的错误是告诉你 std::pair<int, row> 没有 std::hash执行。我不认为该标准为 std::pair 指定了 std::hash 的专业化,因此您需要提供自己的专业化。