C++ - 遍历地图的地图
C++ - iterate over map of maps
我想问一下如何遍历地图的地图。我确实有这张地图 - std::map <string, std::map <string, double> > myMap
,我想像在二维数组中一样遍历它。我对迭代器有点熟悉,但我以前没有迭代过二维地图。
我目前确实有一个 for cycle 和我的迭代器,但我不知道如何迭代第二个地图。你能给我一些提示吗?
感谢您的回答
这会在外部映射中打印一个键,然后在内部映射中为外部映射键打印每个 string/double 条目 - 然后对外部映射中的下一个键执行相同的操作。
for(auto & outer_map_pair : myMap) {
cout << outer_map_pair.first << " contains: " << endl;
for(auto & inner_map_pair : outer_map_pair.second) {
cout << inner_map_pair.first << ": " << inner_map_pair.second << endl;
}
}
这可能会打印:
foo contains:
bar: 4.4
baz: 5.5
stuff contains:
a: 1.1
b: 2.2
c: 3.3
我想问一下如何遍历地图的地图。我确实有这张地图 - std::map <string, std::map <string, double> > myMap
,我想像在二维数组中一样遍历它。我对迭代器有点熟悉,但我以前没有迭代过二维地图。
我目前确实有一个 for cycle 和我的迭代器,但我不知道如何迭代第二个地图。你能给我一些提示吗?
感谢您的回答
这会在外部映射中打印一个键,然后在内部映射中为外部映射键打印每个 string/double 条目 - 然后对外部映射中的下一个键执行相同的操作。
for(auto & outer_map_pair : myMap) {
cout << outer_map_pair.first << " contains: " << endl;
for(auto & inner_map_pair : outer_map_pair.second) {
cout << inner_map_pair.first << ": " << inner_map_pair.second << endl;
}
}
这可能会打印:
foo contains:
bar: 4.4
baz: 5.5
stuff contains:
a: 1.1
b: 2.2
c: 3.3