Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Range-Based for() Loops berfungsi dengan std::map dalam C ?

Bagaimanakah Range-Based for() Loops berfungsi dengan std::map dalam C ?

Linda Hamilton
Lepaskan: 2024-10-29 03:27:29
asal
1123 orang telah melayarinya

 How do Range-Based for() Loops Work with std::map in 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?
}
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan