我试图实现一个看起来像这样的2D unordered_map:
std::unordered_map<std::string, std::unordered_map<std::string, double>>
首先,我通过执行:
来实现内部unordered_graphstd::unordered_map<std::string, std::unordered_map<std::string, double> *inner = new
std::unordered_map<std::string, std::unordered_map<std::string, double>>()
inner->insert(std::make_pair("X", 0));
然后,我尝试通过
创建外部unordered_mapstd::unordered_map<std::string, std::unordered_map<std::string, double> *outer =
std::unordered_map<std::string, std::unordered_map<std::string, double>>()
outer->insert("X", inner);
但它给我一个错误,说no matching function for call to insert
答案 0 :(得分:1)
您在这里使用insert
错误:
outer->insert("X", inner);
它需要一个value_type,即std :: pair。你传递的是两个参数而不是一个,所以你需要对这些参数做make_pair()
,而且你需要传递一个值,所以*inner
而不是inner
这是一个指针。
一旦这一切都说完了,你可能会因为不同的数据结构而变得更好,因为哈希表的哈希表通常不是最有效的。