Cara mengulangi peta di C ++

How Iterate Over Map C



Dalam tutorial ringkas ini, kita akan melihat bagaimana melakukan iterasi dalam peta di C ++.

Terdapat banyak cara untuk mengulang-ulang peta di C ++. Dengan versi C ++ yang lebih baru, ada cara yang lebih maju untuk melakukan lelaran ke atas peta di C ++.







Mari kita teliti satu persatu.



Menggunakan untuk gelung dengan peta stp ::

Kami telah membuat peta bernama countryCapitalMap dan memasukkan pasangan nilai-kunci padanya.



<untuk>
#sertakan
#sertakan
#sertakan
#sertakan
#sertakan
menggunakan ruang namaJam;
intutama() {
// Memulakan peta
peta>'India','Delhi'));
peta negara.masukkan(berpasangan<tali, tali>('Nepal','Kathmandu'));
peta negara.masukkan(berpasangan<tali, tali>('China','Beijing'));
peta negara.masukkan(berpasangan<tali, tali>('Perancis','Paris'));

// Ulangi menggunakan iterator untuk gelung
untuk (keretaitr=peta negara.bermula();itr!=peta negara.akhir();itr++)
{
Jam::kos <<itr->pertama// Kunci akses
<< ':'
<<itr->kedua// Nilai akses
<<Jam::endl;
}
kembali 0;
}
</untuk>
Pengeluaran:
<untuk>
China:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu
</untuk>

Seperti yang anda lihat, kami telah mencetak negara: modal (kunci: nilai) menggunakan untuk gelung.





Sekiranya anda perhatikan, kami telah menggunakan auto taip penentu untuk iterator peta kerana mudah dibaca. Anda boleh menggunakan map::iterator secara eksplisit juga.
Catatan: Sekiranya anda melihat output, ia disusun mengikut kekunci mengikut urutan menaik. Ini kerana std :: map adalah bekas bersekutu yang disusun dengan Perbandingan yang dibekalkan (versi C ++ 11 dan seterusnya). Oleh kerana kami tidak menyediakan pembanding, jadi C ++ telah menggunakan Comparator lalai untuk rentetan.

Menggunakan while loop dengan stp :: peta

Kita juga boleh menggunakan loop sementara dan bukan untuk loop.



<untuk>
#sertakan
#sertakan
#sertakan
#kemasukan>
menggunakan ruang namaJam;
intutama() {
// Memulakan peta
peta<tali, tali>peta negara;
// Masukkan elemen yang berbeza dalam peta
peta negara.masukkan(berpasangan<tali, tali>('India','Delhi'));
peta negara.masukkan(berpasangan<tali, tali>('Nepal','Kathmandu'));
peta negara.masukkan(berpasangan<tali, tali>('China','Beijing'));
peta negara.masukkan(berpasangan<tali, tali>('Perancis','Paris'));


// Buat iterator untuk peta dan Permulaan dengan permulaan
keretaitr=peta negara.bermula();
// Ulangi menggunakan iterator dalam loop sementara
sementara (itr!=peta negara.akhir())
{
Jam::kos <<itr->pertama// Kunci akses
<< ':'
<<itr->kedua// Nilai akses
<<Jam::endl;
itr++;
}
kembali 0;
}
</untuk>
Pengeluaran:
<untuk>
China:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu
</untuk>

Menggunakan Range berdasarkan loop (versi C ++ 11 dan seterusnya)

Sekiranya anda menggunakan versi C ++ 11, ini adalah cara paling elegan untuk melakukan lelaran di atas peta di C ++. Anda boleh mengelakkan gelung berbentuk kubis tradisional dan menggunakannya.

<untuk>
#sertakan
#sertakan
#sertakan

menggunakan ruang namaJam;
intutama() {
// Memulakan peta
peta<tali, tali>peta negara;
// Masukkan elemen yang berbeza dalam peta
peta negara.masukkan(berpasangan<tali, tali>('India','Delhi'));
peta negara.masukkan(berpasangan<tali, tali>('Nepal','Kathmandu'));
peta negara.masukkan(berpasangan<tali, tali>('China','Beijing'));
peta negara.masukkan(berpasangan<tali, tali>('Perancis','Paris'));


// Ulangi menggunakan iterator untuk gelung
untuk (penyambung kereta &dia:peta negara) {
kos <<dia.pertama << ':' <<dia.kedua<<' n';
}

kembali 0;
}
</untuk>
Pengeluaran:
China:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu

Menggunakan rentang berdasarkan gelung dengan pasangan nilai-kunci (versi C ++ 17 dan seterusnya)

Versi ini disokong dari c ++ 17 dan seterusnya dan menyediakan cara yang lebih fleksibel untuk berulang di peta. Anda boleh mengakses pasangan kunci-nilai secara jelas dalam peta yang memberikan penyelesaian yang lebih mudah dibaca.

<untuk>
#sertakan
#sertakan
#sertakan

menggunakan ruang namaJam;
intutama() {
// Memulakan peta
peta<tali, tali>peta negara;
// Masukkan elemen yang berbeza dalam peta
peta negara.masukkan(berpasangan<tali, tali>('India','Delhi'));
peta negara.masukkan(berpasangan<tali, tali>('Nepal','Kathmandu'));
peta negara.masukkan(berpasangan<tali, tali>('China','Beijing'));
peta negara.masukkan(berpasangan<tali, tali>('Perancis','Paris'));


// Ulangi menggunakan iterator untuk gelung
untuk (penyambung kereta& [kunci, nilai] :peta negara) {
kos <<kunci<< ':' <<nilai<< ' n';
}

kembali 0;
}
</untuk>
Pengeluaran:
China:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu

Itu semua tentang cara melakukan lelaran di peta di C ++. Selamat pengekodan!