【发布时间】:2023-03-17 15:47:01
【问题描述】:
如何打印嵌套地图的内容?我正在计算一个单词在文件中出现的次数,按行号和每行的次数报告它。单词、行和每行出现的次数存储在以下容器中:
map<string, map<int, int>> tokens;
但是,我不确定语法。我正在使用以下代码打印列出所有单词的外部地图,但无法弄清楚如何打印内部值(行号和单词在每行上出现的次数)。我假设我可以将它内联在 for 循环中,但我不知道如何:
for (map <string, map<int, int>>::iterator it = tokens.begin(); it != tokens.end(); ++it){
cout << it->first << " : " << /* assume I can include another statement here to print the values? */ endl;
}
我正在尝试获得与此类似的输出:
(单词:行:出现次数,行:出现次数,...)
about : 16:1, 29:1, 166:1, 190:1, 191:1
above : 137:1
accompanied : 6:1
across : 26:1
admit : 20:1
advancing : 170:1
.
.
.
【问题讨论】:
-
在循环内部,执行
map<int, int> const &the_map = it->second;,然后像对tokens那样遍历the_map。 -
迭代内部有什么问题?
-
顺便说一句,使用
const_iterator而不是iterator -
在编辑中,
t->second应该是it->second -
请不要在问题中添加所选答案中可用的解决方案。这只是不必要的重复,一旦其中一个更新而不为另一个更新,就会不同步。
标签: c++ string dictionary iterator output