Cara mengulangi peta di C++

How Iterate Over Map C



Dalam tutorial singkat ini, kita akan melihat cara melakukan iterasi di peta di C++.

Ada beberapa cara untuk mengulangi peta di C++. Dengan versi C++ yang lebih baru, ada cara yang lebih canggih untuk beralih pada peta di C++.







Mari kita bahas satu per satu.



Menggunakan for loop dengan stp::map

Kami telah membuat peta bernama |_+_| dan memasukkan pasangan nilai kunci ke dalamnya.



<untuk>
#termasuk
#termasuk
#termasuk
#termasuk
#termasuk
menggunakan ruang namajam;
ke dalamutama() {
// Inisialisasi peta
peta>'India','Delhi'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Nepal','Kathmandu'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Cina','Beijing'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Perancis','Paris'));

// Iterasi menggunakan iterator di for loop
untuk (mobilitr=countryCapitalPeta.mulai();itr!=countryCapitalPeta.akhir();itr++)
{
jam::biaya <<itr->pertama// Kunci akses
<< ':'
<<itr->kedua// Nilai akses
<<jam::akhir;
}
kembali 0;
}
</untuk>
Keluaran:
<untuk>
Cina:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu
</untuk>

Seperti yang Anda lihat, kami telah mencetak country:capital(key:value) menggunakan for loop.





Jika Anda perhatikan, kami telah menggunakan |_+_| type specifier untuk peta iterator karena keterbacaan. Anda dapat menggunakan |_+_| secara eksplisit juga.
Catatan: Jika Anda melihat hasilnya, itu diurutkan berdasarkan kunci dalam urutan menaik. Ini karena std::map adalah wadah asosiatif yang diurutkan dengan Pembanding yang disediakan (versi C++ 11 dan seterusnya). Karena kami tidak menyediakan pembanding apa pun, maka C++ telah menggunakan Pembanding default untuk string.

Menggunakan while loop dengan stp::map

Kita juga dapat menggunakan perulangan while sebagai ganti perulangan for.



<untuk>
#termasuk
#termasuk
#termasuk
#sertakan >
menggunakan ruang namajam;
ke dalamutama() {
// Inisialisasi peta
peta<tali, tali>negaraIbukotaPeta;
// Menyisipkan elemen yang berbeda di peta
countryCapitalPeta.memasukkan(pasangan<tali, tali>('India','Delhi'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Nepal','Kathmandu'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Cina','Beijing'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Perancis','Paris'));


// Buat iterator untuk peta dan Inisialisasi dengan awal
mobilitr=countryCapitalPeta.mulai();
// Iterasi menggunakan iterator di while loop
ketika (itr!=countryCapitalPeta.akhir())
{
jam::biaya <<itr->pertama// Kunci akses
<< ':'
<<itr->kedua// Nilai akses
<<jam::akhir;
itr++;
}
kembali 0;
}
</untuk>
Keluaran:
<untuk>
Cina:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu
</untuk>

Menggunakan Rentang berbasis untuk loop (versi C++ 11 dan seterusnya)

Jika Anda menggunakan versi C++ 11, maka ini adalah cara paling elegan untuk beralih di atas peta di C++. Anda dapat menghindari loop cubersome tradisional dan menggunakan ini sebagai gantinya.

<untuk>
#termasuk
#termasuk
#termasuk

menggunakan ruang namajam;
ke dalamutama() {
// Inisialisasi peta
peta<tali, tali>negaraIbukotaPeta;
// Menyisipkan elemen yang berbeda di peta
countryCapitalPeta.memasukkan(pasangan<tali, tali>('India','Delhi'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Nepal','Kathmandu'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Cina','Beijing'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Perancis','Paris'));


// Iterasi menggunakan iterator di for loop
untuk (konstan mobil &dia:negaraIbukotaPeta) {
biaya <<dia.pertama << ':' <<dia.kedua<<' ';
}

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

Menggunakan loop for berbasis rentang dengan pasangan nilai kunci (versi C++ 17 dan seterusnya)

Versi ini didukung dari c++17 dan seterusnya dan menyediakan cara yang lebih fleksibel untuk iterasi di atas peta. Anda dapat secara eksplisit mengakses pasangan nilai kunci di peta yang memberikan solusi yang lebih mudah dibaca.

<untuk>
#termasuk
#termasuk
#termasuk

menggunakan ruang namajam;
ke dalamutama() {
// Inisialisasi peta
peta<tali, tali>negaraIbukotaPeta;
// Menyisipkan elemen yang berbeda di peta
countryCapitalPeta.memasukkan(pasangan<tali, tali>('India','Delhi'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Nepal','Kathmandu'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Cina','Beijing'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Perancis','Paris'));


// Iterasi menggunakan iterator di for loop
untuk (konstan mobil& [kunci, nilai] :negaraIbukotaPeta) {
biaya <<kunci<< ':' <<nilai<< ' ';
}

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

Itu semua tentang cara mengulangi peta di C++. Selamat mengkode!