C++'da harita üzerinde yineleme nasıl yapılır?

How Iterate Over Map C



Bu hızlı eğitimde, C++'da harita üzerinde nasıl yineleme yapılacağını göreceğiz.

C++'da harita üzerinde yineleme yapmanın birden çok yolu vardır. C++'ın daha yeni sürümleriyle, C++'da harita üzerinde yineleme yapmanın daha gelişmiş yolları vardır.







Her birinin üzerinden geçelim.



stp::map ile for döngüsü kullanma

|_+_| adlı bir harita oluşturduk. ve buna anahtar/değer çiftleri eklendi.



<için>
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
kullanarak ad alanısaat;
intana() {
// Bir haritayı başlat
harita>'Hindistan','Deli'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Nepal','Katmandu'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Çin','Pekin'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Fransa','Paris'));

// Döngü için yineleyici kullanarak yinele
için (Otoitr=ülkeSermaye Haritası.başlamak();itr!=ülkeSermaye Haritası.son();itr++)
{
saat::maliyet <<itr->ilk// Erişim anahtarı
<< ':'
<<itr->ikinci// Erişim değeri
<<saat::son;
}
dönüş 0;
}
</için>
Çıktı:
<için>
Çin:Pekin
Fransa:Paris
Hindistan:Delhi
Nepal:Katmandu
</için>

Gördüğünüz gibi, for döngüsünü kullanarak country:capital(key:value) yazdırdık.





Dikkat ederseniz, |_+_| okunabilirlik nedeniyle harita yineleyici için tür belirteci. |_+_| kullanabilirsiniz açıkçası da.
Not: Çıktıyı görürseniz, artan düzende tuşlara göre sıralanır. Bunun nedeni, std::map'in sağlanan Karşılaştırıcı (sürüm C++11 ve sonrası) ile sıralanmış bir ilişkisel kapsayıcı olmasıdır. Herhangi bir karşılaştırıcı sağlamadığımız için, C++ dize için varsayılan Karşılaştırıcıyı kullandı.

stp::map ile while döngüsünü kullanma

For döngüsü yerine while döngüsünü de kullanabiliriz.



<için>
#Dahil etmek
#Dahil etmek
#Dahil etmek
#include >
kullanarak ad alanısaat;
intana() {
// Bir haritayı başlat
harita<sicim, sicim>ülkeSermayeHarita;
// Haritaya farklı elemanlar ekle
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Hindistan','Deli'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Nepal','Katmandu'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Çin','Pekin'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Fransa','Paris'));


// Harita için bir yineleyici oluştur ve start ile başlat
Otoitr=ülkeSermaye Haritası.başlamak();
// while döngüsünde yineleyici kullanarak yineleme
süre (itr!=ülkeSermaye Haritası.son())
{
saat::maliyet <<itr->ilk// Erişim anahtarı
<< ':'
<<itr->ikinci// Erişim değeri
<<saat::son;
itr++;
}
dönüş 0;
}
</için>
Çıktı:
<için>
Çin:Pekin
Fransa:Paris
Hindistan:Delhi
Nepal:Katmandu
</için>

Döngü tabanlı Aralık kullanma (C++11 sürümünden itibaren)

C++11 sürümünü kullanıyorsanız, bu, C++'da harita üzerinde yineleme yapmanın en zarif yoludur. Geleneksel kübik döngülerden kaçınabilir ve bunun yerine bunu kullanabilirsiniz.

<için>
#Dahil etmek
#Dahil etmek
#Dahil etmek

kullanarak ad alanısaat;
intana() {
// Bir haritayı başlat
harita<sicim, sicim>ülkeSermayeHarita;
// Haritaya farklı elemanlar ekle
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Hindistan','Deli'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Nepal','Katmandu'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Çin','Pekin'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Fransa','Paris'));


// Döngü için yineleyici kullanarak yinele
için (const Oto &o:ülkeSermayeHarita) {
maliyet <<o.ilk << ':' <<o.ikinci<<' ';
}

dönüş 0;
}
</için>
Çıktı:
Çin:Pekin
Fransa:Paris
Hindistan:Delhi
Nepal:Katmandu

Anahtar/değer çiftleriyle aralık tabanlı for döngüsü kullanma (C++17 sürümünden itibaren)

Bu sürüm c++17'den itibaren desteklenir ve harita üzerinde yineleme için daha esnek bir yol sağlar. Daha da okunabilir bir çözüm sağlayan haritadaki anahtar/değer çiftlerine açıkça erişebilirsiniz.

<için>
#Dahil etmek
#Dahil etmek
#Dahil etmek

kullanarak ad alanısaat;
intana() {
// Bir haritayı başlat
harita<sicim, sicim>ülkeSermayeHarita;
// Haritaya farklı elemanlar ekle
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Hindistan','Deli'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Nepal','Katmandu'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Çin','Pekin'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Fransa','Paris'));


// Döngü için yineleyici kullanarak yinele
için (const Oto& [anahtar, değer] :ülkeSermayeHarita) {
maliyet <<anahtar<< ':' <<değer<< ' ';
}

dönüş 0;
}
</için>
Çıktı:
Çin:Pekin
Fransa:Paris
Hindistan:Delhi
Nepal:Katmandu

Bu tamamen C++'da harita üzerinde nasıl yineleme yapılacağıyla ilgili. Mutlu kodlama!