Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengulangi Dengan Cekap Melalui Peta Bersarang dalam C ?
Lelaran melalui Peta Bersarang dalam C
Pertimbangkan senario di mana anda mempunyai peta bersarang dalam C . Khususnya, peta anda ialah std::map
m["name1"]["value1"] = "data1"; m["name1"]["value2"] = "data2"; m["name2"]["value1"] = "data1"; m["name2"]["value2"] = "data2"; m["name3"]["value1"] = "data1"; m["name3"]["value2"] = "data2";
Untuk mengulangi peta bersarang ini dengan berkesan dan mengakses pelbagai nilai, anda boleh menggunakan teknik berikut:
Menggunakan C 11 Ranged untuk Gelung:
Dengan C 11, anda boleh menggunakan berasaskan julat untuk gelung ke memudahkan proses lelaran. Pendekatan ini mengelakkan salinan yang tidak diperlukan dan menyediakan sintaks yang ringkas.
std::map<std::string, std::map<std::string, std::string>> mymap; for (auto const &ent1 : mymap) { // ent1.first is the first key for (auto const &ent2 : ent1.second) { // ent2.first is the second key // ent2.second is the data } }
Menggunakan Definisi Eksplisit Pembolehubah Rujukan:
Sebagai alternatif, anda boleh meningkatkan kebolehbacaan dengan mentakrifkan pembolehubah rujukan secara eksplisit untuk kunci dan nilai. Walaupun pendekatan ini menghasilkan lebih banyak kod, ia secara eksplisit mentakrifkan pembolehubah untuk kejelasan yang lebih baik.
for (auto const &ent1 : mymap) { auto const &outer_key = ent1.first; auto const &inner_map = ent1.second; for (auto const &ent2 : inner_map) { auto const &inner_key = ent2.first; auto const &inner_value = ent2.second; } }
Menggunakan Pengikatan Berstruktur dalam C 17:
Dalam C 17, pengikatan berstruktur menawarkan kaedah yang lebih ringkas dan padat untuk berulang melalui bersarang peta.
for (auto const &[outer_key, inner_map] : mymap) { for (auto const &[inner_key, inner_value] : inner_map) { // Access outer_key, inner_key and inner_value directly } }
Atas ialah kandungan terperinci Bagaimana untuk Mengulangi Dengan Cekap Melalui Peta Bersarang dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!