Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Kelakuan Gelung Berasaskan Julat Untuk() Berbeza dengan std::map dalam C ?

Bagaimanakah Kelakuan Gelung Berasaskan Julat Untuk() Berbeza dengan std::map dalam C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 19:23:30341semak imbas

How Does Range-Based For() Loop Behavior Differ with std::map in C  ?

Gelung Berasaskan Julat untuk() dengan std::map: Membongkar Jenis_Nilai

Apabila menggunakan gelung berasaskan julat untuk() dalam C dengan bekas perpustakaan standard seperti std::map, memahami jenis pembolehubah yang terhasil adalah penting. Artikel ini menyelidiki kerumitan peta dalam gelung berasaskan julat, memberikan cerapan tentang perkara yang diharapkan.

Lazimnya, berdasarkan julat untuk() gelung dengan bekas seperti std::vector memberikan akses terus kepada setiap elemen nilai. Walau bagaimanapun, untuk bekas seperti std::map, keadaan menjadi lebih bernuansa sedikit.

Dalam kes std::map, pembolehubah (cth., abc dalam contoh) dalam julat berasaskan untuk() gelung ialah jenis peta::value_type, yang merangkum pasangan kunci dan nilai (std::pair). Ini bermakna bahawa dalam gelung, abc mewakili pasangan nilai kunci dan bukannya lelaran.

Mengakses kunci dan nilai daripada abc memerlukan langkah tambahan. Dalam C 17 dan ke atas, gelung berasaskan julat yang dimusnahkan membenarkan akses terus kepada kedua-dua kunci dan nilai:

<code class="cpp">for (auto& [key, value]: myMap) {
    std::cout << key << " has value " << value << std::endl;
}</code>

Sebagai alternatif, anda boleh menggunakan gelung berasaskan julat tradisional dalam C 11 dan C 14:

<code class="cpp">for (const auto& kv : myMap) {
    std::cout << kv.first << " has value " << kv.second << std::endl;
}</code>

Dengan menguraikan setiap pasangan nilai kunci secara manual, anda mendapat akses kepada kedua-dua kunci dan nilai. Selain itu, menandakan pembolehubah kv sebagai const memberikan pandangan baca sahaja bagi nilai.

Memahami nilai_jenis dan nuansa gelung for() berasaskan julat dengan std::map adalah penting untuk penggunaan yang berkesan. Pengetahuan ini membolehkan anda mengakses dan memanipulasi pasangan nilai kunci dengan kejelasan dan kecekapan.

Atas ialah kandungan terperinci Bagaimanakah Kelakuan Gelung Berasaskan Julat Untuk() Berbeza dengan std::map dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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