Seperti einpoklum disebutkan dalam jawaban mereka , karena C ++ 17 Anda juga dapat menggunakan deklarasi penjilidan terstruktur . Saya ingin memperluas itu dengan memberikan solusi lengkap untuk beralih di atas peta peta dengan cara yang nyaman:
int main() {
std::map<std::string, std::map<std::string, std::string>> m {
{"name1", {{"value1", "data1"}, {"value2", "data2"}}},
{"name2", {{"value1", "data1"}, {"value2", "data2"}}},
{"name3", {{"value1", "data1"}, {"value2", "data2"}}}
};
for (const auto& [k1, v1] : m)
for (const auto& [k2, v2] : v1)
std::cout << "m[" << k1 << "][" << k2 << "]=" << v2 << std::endl;
return 0;
}
Catatan 1: Untuk mengisi peta, saya menggunakan daftar penginisialisasi (yang merupakan fitur C ++ 11 ). Ini kadang-kadang berguna untuk menjaga inisialisasi tetap tetap ringkas.
Catatan 2: Jika Anda ingin memodifikasi peta m
di dalam loop, Anda harus menghapus const
kata kunci.
Kode di Coliru