如何在C ++中遍历unordered_map的unordered_map的unordered_map

问题描述

我想遍历数据结构-unordered_map >> myMap。为了进一步指定,我想获取像->这样的数据元素 myMap [someVal1] [someVal2] {此无序图的所有第二个元素}

我知道以下事实:3d数组可以做到这一点,但是使用3d数组效率不高,因为数据范围很大,程序最终将使用比所需空间更多的空间。一些迭代器,例如unordered_map >> :: iterator i,以及其他几个这样的迭代器,但是它总是以某种错误或其他错误结束。有人可以帮助我了解如何遍历此地图吗?预先感谢!

解决方法

如果您不想使用迭代器,则可以使用foreach循环遍历地图(它需要C ++ 11,我认为这不会有问题)。

myMap mapMapMap;
for(auto& mapMap : mapMapMap){
    for(auto& map : mapMap.second){
        for(auto& key_value : map.second){
            int key = key_value.first;
            int value = key_value.second;
            // ....
        }
    }
}

此外,如果您不想遍历所有地图,而只想遍历第三层的值(第一层给定第二层),那么就应该做到:

int k1,k2;
for(auto& key_value : myMap.at(k1).at(k2)){
    //...
}