如何打印嵌套的std :: unordered_map的内容?

问题描述 投票:2回答:3

我正在尝试打印这样指定的std::unordered_map的所有内容:

std::unordered_map<uint64_t, std::unordered_map<uint64_t,uint64_t>> m;

在地图上添加内容后,我尝试了以下操作:

for (auto it=map.begin(); it!=map.end(); it++) {
    cout << it->first << it->second << endl;
}

但是它不起作用。

c++ c++11 stl unordered-map
3个回答
2
投票
for (auto const& i : m) { for (auto const& j : i.second) { std::cout << j.first << " " << j.second << std::endl; } }

1
投票
for (const auto& [key1, value1] : map) for (const auto& [key2, value2] : value1) std::cout << key2 << " " << value2 << std::endl;

虽然仅在C ++ 17中有效。如果您无法使用它,那么您将获得NutCracker的答案。


1
投票
如何打印嵌套的std :: unordered_map的内容?
要打印嵌套的std::unordered_map,请使用嵌套的range-based for loop

for (auto const& i: m) { std::cout << "Key: " << i.first << " ("; for (auto const& j: i.second) std::cout << j.first << " " << j.second; std::cout << " )" << std::endl; }

但是,如果要修改容器的元素:

for (const& i: m) {
        for (const& j: i.second)
            // Do operations
}
© www.soinside.com 2019 - 2024. All rights reserved.