Jak iterować mapę w C ++

Jak iterować mapę w C ++
W tym szybkim samouczku zobaczymy, jak iterować na mapie w C++. Istnieje wiele sposobów iterowania na mapie w C++. Z nowszymi wersjami C ++ istnieją bardziej zaawansowane sposoby iterację nad mapą w C++. Przejdźmy do każdego po drugim.

Używanie do pętli ze std :: mapa

Stworzyliśmy mapę o nazwie countrycapitalmap i włożyłem do niego pary wartości kluczowej. Następnie używamy iteratora do wykonania pętli za pośrednictwem członków struktury danych mapy.

#włączać
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
// Zainicjuj mapę
mapacountrycapitalmap;
countrycapitalmap.Wstaw (para(„Nepal”, „Katmandu”));
countrycapitalmap.Wstaw (para(„Chiny”, „Pekin”));
countrycapitalmap.Wstaw (para(„Francja”, „Paryż”));
// iterate za pomocą iteratora do pętli
dla (auto iTr = countrycapitalMap.zaczynać();
ITR != countrycapitalMap.koniec(); ITR ++)
STD :: Cout << itr->Pierwszy // Klucz dostępu
<< ':'
<< itr->Druga // wartość dostępu
<< std::endl;

powrót 0;
Wyjście:
Chiny: Pekin
Francja: Paryż
Nepal: Katmandu

Jak widać, wydrukowaliśmy kraj: Capital (klucz: wartość) Używanie do pętli.

Jeśli zauważysz, użyliśmy automatyczny Specyfikator typu dla iteratora map z powodu czytelności. Możesz użyć Map :: Iterator Już wyraźnie.
Notatka: Jeśli widzisz wyjście, jest ono sortowane według kluczy w kolejności rosnącej. Wynika to z faktu, że STD :: Map to posortowany kontener asocjacyjny z dostarczonym komparatorem (wersja C ++ 11). Ponieważ nie dostarczyliśmy żadnego komparatora, więc C ++ użył domyślnego komparatora dla ciągu.

Korzystanie z pętli ze STP :: mapa

Możemy również użyć pętli white zamiast do pętli.

#włączać
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
// Zainicjuj mapę
mapa countrycapitalmap;
// Wstaw różne elementy na mapie
countrycapitalmap.Wstaw (para(„Indie”, „Delhi”));
countrycapitalmap.Wstaw (para(„Nepal”, „Katmandu”));
countrycapitalmap.Wstaw (para(„Chiny”, „Pekin”));
countrycapitalmap.Wstaw (para(„Francja”, „Paryż”));
// Utwórz iterator mapy i zainicjuj z początkiem
auto ITR = countrycapitalMap.zaczynać();
// iteruj za pomocą iteratora w pobycie
While (ITR!= countrycapitalMap.koniec())

STD :: Cout << itr->Pierwszy // Klucz dostępu
<< ':'
<< itr->Druga // wartość dostępu
<< std::endl;
ITR ++;

powrót 0;

Wyjście:

Chiny: Pekin
Francja: Paryż
Indie: Delhi
Nepal: Katmandu

Korzystanie z zakresu opartego na pętli (dalej wersja C ++ 11)

Jeśli używasz wersji C ++ 11, jest to najbardziej elegancki sposób na iterowanie mapy w C++. Możesz uniknąć tradycyjnych pętli kubeszorskich i zamiast tego użyć tego.

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
// Zainicjuj mapę
mapa countrycapitalmap;
// Wstaw różne elementy na mapie
countrycapitalmap.Wstaw (para(„Indie”, „Delhi”));
countrycapitalmap.Wstaw (para(„Nepal”, „Katmandu”));
countrycapitalmap.Wstaw (para(„Chiny”, „Pekin”));
countrycapitalmap.Wstaw (para(„Francja”, „Paryż”));
// iterate za pomocą iteratora do pętli
dla (const auto & ele: countrycapitalMap)
Cout <
powrót 0;
Wyjście:
Chiny: Pekin
Francja: Paryż
Indie: Delhi
Nepal: Katmandu

Używając zasięgu dla pętli z parami kluczów (wersja C ++ 17)

Ta wersja jest obsługiwana od C ++ 17 i zapewnia bardziej elastyczny sposób iteracji nad mapą. Możesz wyraźnie uzyskać dostęp do pary kluczowych wartości na mapie, która zapewnia jeszcze bardziej czytelne rozwiązanie.

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
// Zainicjuj mapę
mapa countrycapitalmap;
// Wstaw różne elementy na mapie
countrycapitalmap.Wstaw (para(„Indie”, „Delhi”));
countrycapitalmap.Wstaw (para(„Nepal”, „Katmandu”));
countrycapitalmap.Wstaw (para(„Chiny”, „Pekin”));
countrycapitalmap.Wstaw (para(„Francja”, „Paryż”));
// iterate za pomocą iteratora do pętli
dla (const auto i [klucz, wartość]: countrycapitalMap)
Cout << key << ":" << value << "\n";

powrót 0;
Wyjście:
Chiny: Pekin
Francja: Paryż
Indie: Delhi
Nepal: Katmandu

Chodzi o to, jak iterować mapę w c++.