创建一个2d unordered_map C ++

时间:2014-09-06 08:31:22

标签: c++

我试图实现一个看起来像这样的2D unordered_map:

std::unordered_map<std::string, std::unordered_map<std::string, double>>

首先,我通过执行:

来实现内部unordered_graph
std::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_map
std::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

1 个答案:

答案 0 :(得分:1)

您在这里使用insert错误:

outer->insert("X", inner);

它需要一个value_type,即std :: pair。你传递的是两个参数而不是一个,所以你需要对这些参数做make_pair(),而且你需要传递一个值,所以*inner而不是inner这是一个指针。

一旦这一切都说完了,你可能会因为不同的数据结构而变得更好,因为哈希表的哈希表通常不是最有效的。