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

Mary-Kate Olsen
Lepaskan: 2024-10-29 19:23:30
asal
336 orang telah melayarinya

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!