【发布时间】:2018-08-31 10:00:46
【问题描述】:
我更习惯于使用单个地图而不是嵌套地图。所以我很难理解如何处理这个问题。
备注:请不要要求我使用multimap或boost,我只能使用这种结构
在 C++ STL 映射中,我有这样的定义
map<string, map<string, string>> exploration; // country --> state --> city
第一张地图表示一对键(国家)和值作为树结构map<string, string>,分别代表各自的州和城市。
我知道如何手动填充此结构(硬编码),如下所示:
exploration["Canada"]["Ontario"] = "Toronto";
问题:
稍后上面显示的数据将由用户输入:
> Canada Ontario Toronto
> Canada Alberta Edmonton
> USA Washington Seatle
> USA Nevada Las-Vegas
所以如果我将这个逻辑应用到上面的示例中,这是错误的,因为 map 不接受重复的键
插图(错误):
exploration["Canada"]["Ontario"] = "Toronto";
exploration["Canada"]["Alberta"] = "Edmonton";
插图(我在找什么):
exploration["Canada"]["Ontario"] = "Toronto";
["Alberta"] = "Edmonton";
Canada
**
* *
* *
Ontario Alberta
* *
* *
Toronto Edmonton
我的假设解决方案,
> Canada Ontario Toronto
1个案例:如果勘探结构中不存在国家(加拿大),我将其与省和市一起添加。
2 case:如果国家(加拿大)存在,那么我把之前输入的数据加长边安大略和多伦多。
欢迎任何指示、想法或提示。
【问题讨论】:
-
嗯,你写的错误插图实际上是正确的。它将为
Canada键创建一个映射,其中包含另一个映射作为其值。后者则包含两个键。 -
我觉得这个链接可能对你有帮助:cplusplus.com/forum/beginner/113056
-
“所以如果我将这个逻辑应用到我上面的例子中,这是错误的,因为 map 不接受重复的键”。您看到的实际问题是什么?编译错误?意外行为?
-
我的意思是错误的意思是我不希望每次都插入加拿大的钥匙,而是在国家存在的情况下只插入内部地图
标签: c++ dictionary mapping nested-map