C++

Jak iterować po mapie w C++

Jak iterować po mapie w C++
W tym krótkim samouczku zobaczymy, jak iterować po mapie w C++.

Istnieje wiele sposobów iteracji po mapie w C++. W nowszych wersjach C++ istnieją bardziej zaawansowane sposoby iteracji po mapie w C++.

Przyjrzyjmy się każdemu po kolei.

Używanie pętli for z stp::map

Stworzyliśmy mapę o nazwie krajKapitałMapa i wstawił do niego pary klucz-wartość.


#zawierać
#zawierać
#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
int main()
// Zainicjuj mapę
mapa>„Indie”, „Delhi”));
krajKapitałMapa.wstaw (para(„Nepal”, „Katmandu”));
krajKapitałMapa.wstaw (para(„Chiny”, „Pekin”));
krajKapitałMapa.wstaw (para(„Francja”, „Paryż”));
// Iteracja za pomocą iteratora w pętli for
for (auto itr = countryCapitalMap.zaczynać(); itra != krajKapitałMapa.koniec(); itr++)

std::cout << itr->pierwszy // klawisz dostępu
<< ':'
<< itr->drugi // Dostęp do wartości
<< std::endl;

zwróć 0;


Wynik:

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

Jak widać, wydrukowaliśmy kraj:kapitał(klucz:wartość) za pomocą pętli for.

Jeśli zauważysz, użyliśmy automatyczny specyfikator typu dla iteratora mapy ze względu na czytelność. Możesz użyć mapa::iterator również wyraźnie.
Uwaga: Jeśli widzisz dane wyjściowe, są one posortowane według kluczy w kolejności rosnącej. Dzieje się tak, ponieważ std::map jest posortowanym kontenerem asocjacyjnym z dostarczonym Komparatorem (od wersji C++11). Ponieważ nie dostarczyliśmy żadnego komparatora, więc C++ użył domyślnego komparatora dla string.

Używanie pętli while z stp::map

Możemy również użyć pętli while zamiast pętli for.


#zawierać
#zawierać
#zawierać
#zawierać >
używając standardowej przestrzeni nazw;
int main()
// Zainicjuj mapę
mapa krajKapitałMapa;
// Wstaw różne elementy na mapie
krajKapitałMapa.wstaw (para(„Indie”, „Delhi”));
krajKapitałMapa.wstaw (para(„Nepal”, „Katmandu”));
krajKapitałMapa.wstaw (para(„Chiny”, „Pekin”));
krajKapitałMapa.wstaw (para(„Francja”, „Paryż”));
// Utwórz iterator dla mapy i zainicjuj za pomocą begin
auto itr=countryCapitalMap.zaczynać();
// Iteracja za pomocą iteratora w pętli while
podczas (itri!=krajKapitałMapa.koniec())

std::cout << itr->pierwszy // klawisz dostępu
<< ':'
<< itr->drugi // Dostęp do wartości
<< std::endl;
itr++;

zwróć 0;


Wynik:

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

Korzystanie z zakresu opartego na pętli (od wersji C++11)

Jeśli używasz wersji C++11, to jest to najbardziej elegancki sposób na iterację po mapie w C++. Możesz uniknąć tradycyjnych pętli z kostką i użyć ich zamiast tego.


#zawierać
#zawierać
#zawierać
używając standardowej przestrzeni nazw;
int main()
// Zainicjuj mapę
mapa krajKapitałMapa;
// Wstaw różne elementy na mapie
krajKapitałMapa.wstaw (para(„Indie”, „Delhi”));
krajKapitałMapa.wstaw (para(„Nepal”, „Katmandu”));
krajKapitałMapa.wstaw (para(„Chiny”, „Pekin”));
krajKapitałMapa.wstaw (para(„Francja”, „Paryż”));
// Iteracja za pomocą iteratora w pętli for
for (const auto &ele : countryCapitalMap)
Cout <
zwróć 0;


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

Korzystanie z pętli for opartej na zakresie z parami klucz-wartość (od wersji C++ 17)

Ta wersja jest obsługiwana od c++17 i zapewnia bardziej elastyczny sposób iteracji po mapie. Możesz jawnie uzyskać dostęp do pary klucz-wartość na mapie, co zapewnia jeszcze bardziej czytelne rozwiązanie.


#zawierać
#zawierać
#zawierać
używając standardowej przestrzeni nazw;
int main()
// Zainicjuj mapę
mapa krajKapitałMapa;
// Wstaw różne elementy na mapie
krajKapitałMapa.wstaw (para(„Indie”, „Delhi”));
krajKapitałMapa.wstaw (para(„Nepal”, „Katmandu”));
krajKapitałMapa.wstaw (para(„Chiny”, „Pekin”));
krajKapitałMapa.wstaw (para(„Francja”, „Paryż”));
// Iteracja za pomocą iteratora w pętli for
for (const auto& [klucz, wartość] : countryCapitalMap)
Cout << key << ":" << value << "\n";

zwróć 0;


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

To wszystko o tym, jak iterować po mapie w C++. Szczęśliwego kodowania!

Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...