我正在尝试打印这样指定的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;
}
但是它不起作用。
for (auto const& i : m) {
for (auto const& j : i.second) {
std::cout << j.first << " " << j.second << std::endl;
}
}
for (const auto& [key1, value1] : map)
for (const auto& [key2, value2] : value1)
std::cout << key2 << " " << value2 << std::endl;
虽然仅在C ++ 17中有效。如果您无法使用它,那么您将获得NutCracker的答案。
要打印嵌套的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 }