【问题标题】:What's the type of an entry of an unordered_map in c++c++中unordered_map的条目类型是什么
【发布时间】:2015-07-06 05:55:20
【问题描述】:

我有一个数据结构:

unordered_map<pair<string, string>, unordered_map<pair<int, int>, double>> myMap;

我使用for 循环来获取它的条目,并将这个条目用作我的函数的输入:

for (auto& map : myMap) { 
  auto myReturn = myFunc(map);
}

但是我在写myFunc的时候,不知道参数的类型是什么,是pair吗?

string myFunc(pair<pair<string, string>, unordered_map<pair<int, int>, double>> map)

【问题讨论】:

  • 如果您需要,值类型有一个类型别名。您可以咨询 reference 以查看它的别名。
  • 这就是为什么许多软件公司都有代码政策反对使用auto,除非在特殊情况下。

标签: c++ c++11 hashmap unordered-map


【解决方案1】:

如您的示例所示,遍历unordered_map 将产生unordered_map::value_type,即std::pair&lt;const Key, Value&gt;。所以在你的情况下,变量map 的类型是

std::pair<const pair<string, string>, unordered_map<pair<int, int>, double>>

您无法调用myFunc,因为myFunc 的参数类型中pair 的第一个元素必须是const 限定的。

【讨论】:

  • 所以我的猜测几乎是正确的,除了我应该做关键部分const,对吧?
  • @EmersonXu 是的。您还应该考虑创建一个或两个 typedef,而不是到处写那个庞大、笨拙的类型名称。
猜你喜欢
  • 2011-03-31
  • 2019-01-25
  • 2014-12-14
  • 2013-05-27
  • 2017-11-03
  • 1970-01-01
  • 2011-01-03
  • 2013-05-01
相关资源
最近更新 更多