Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Range-Based for() Loops berfungsi dengan std::map dalam C ?
Menggunakan Range-Based for() Gelung dengan std::map
Julat-based for() gelung dalam C 11 dan seterusnya sediakan cara yang mudah untuk mengulangi bekas. Walaupun contoh sering mempamerkan bekas ringkas seperti vektor, kekeliruan timbul apabila menggunakannya dengan struktur data yang lebih kompleks seperti peta.
Apabila menggunakan gelung berasaskan julat untuk() dengan peta, jenis elemen tidak semudah itu. nampaknya. Pertimbangkan contoh berikut:
<code class="cpp">std::map<foo, bar> testing = { /*...blah...*/ }; for (auto abc : testing) { std::cout << abc << std::endl; // ? should this give a foo? a bar? std::cout << abc->first << std::endl; // ? or is abc an iterator? }
Tidak seperti vektor, dengan pembolehubah gelung ialah jenis elemen bekas (cth., int), pembolehubah gelung abc untuk peta sebenarnya daripada jenis std::pair< ;const foo, bar>. Ini bermakna abc memegang sepasang yang mengandungi kedua-dua kunci dan nilai peta.
Dalam C 17 dan kemudian, anda boleh mengakses terus kekunci dan nilai menggunakan pengikatan berstruktur:
<code class="cpp">for (auto& [key, value] : myMap) { std::cout << key << " has value " << value << std::endl; }</code>
Dalam C 11 dan C 14, anda masih boleh mengulangi peta menggunakan gelung untuk dipertingkat, tetapi anda perlu mengekstrak kunci dan nilai secara manual:
<code class="cpp">for (const auto& kv : myMap) { std::cout << kv.first << " has value " << kv.second << std::endl; }</code>
Adalah penting untuk memahami bahawa pembolehubah gelung abc atau kv dalam contoh ini bukan lelaran. Sebaliknya, ia mewakili salinan pasangan yang mengandungi kunci dan nilai elemen peta semasa. Perbezaan ini penting apabila mempertimbangkan pengubahsuaian atau rujukan kepada elemen peta dalam gelung.
Atas ialah kandungan terperinci Bagaimanakah Range-Based for() Loops berfungsi dengan std::map dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!