Como iterar sobre o mapa em C ++

Como iterar sobre o mapa em C ++
Neste tutorial rápido, veremos como iterar no mapa em c++. Existem várias maneiras de iterar o mapa em C++. Com versões mais recentes do C ++, existem maneiras mais avançadas de iterar sobre o mapa em C++. Vamos passar por cada um por um.

Usando para loop com std :: mapa

Nós criamos um mapa nomeado countrycapitalmap e inseriu pares de valor-chave para ele. Em seguida, usamos um iterador para fazer um loop para os membros da estrutura de dados do mapa.

#incluir
#incluir
#incluir
#incluir
usando namespace std;
int main ()
// Inicialize um mapa
mapacountrycapitalmap;
countrycapitalmap.Insira (par("Nepal", "Kathmandu"));
countrycapitalmap.Insira (par("China", "Pequim"));
countrycapitalmap.Insira (par("França", "Paris"));
// itera usando o iterador para loop
para (Auto Itr = CountryCapitalMap.começar();
itr != countryCapitalMap.fim(); itr ++)
std :: cout << itr->primeiro // chave de acesso
<< ':'
<< itr->Segundo // Valor de Acesso
<< std::endl;

retornar 0;
Saída:
China: Pequim
França: Paris
Nepal: Kathmandu

Como você pode ver, nós impressamos país: capital (chave: valor) usando o loop.

Se você notar, nós usamos auto Digite especificador para iterador de mapa devido à legibilidade. Você pode usar mapa :: iterator explicitamente também.
Observação: Se você vir a saída, ela é classificada por chaves em ordem crescente. Isso ocorre porque o mapa STD :: é um recipiente associativo classificado com comparador fornecido (versão C ++ 11). Como não fornecemos nenhum comparador, o C ++ usou o comparador padrão para string.

Usando enquanto loop com STP :: mapa

Também podemos usar um loop de tempo em vez de loop.

#incluir
#incluir
#incluir
#incluir
usando namespace std;
int main ()
// Inicialize um mapa
mapa countrycapitalmap;
// Insira diferentes elementos no mapa
countrycapitalmap.Insira (par("Índia", "Delhi"));
countrycapitalmap.Insira (par("Nepal", "Kathmandu"));
countrycapitalmap.Insira (par("China", "Pequim"));
countrycapitalmap.Insira (par("França", "Paris"));
// Crie um iterador para o mapa e inicialize com o início
Auto ITR = CountryCapitalMap.começar();
// itera usando o iterador em enquanto o loop
enquanto (itr!= countryCapitalMap.fim())

std :: cout << itr->primeiro // chave de acesso
<< ':'
<< itr->Segundo // Valor de Acesso
<< std::endl;
itr ++;

retornar 0;

Saída:

China: Pequim
França: Paris
Índia: Delhi
Nepal: Kathmandu

Usando range baseado em loop (versão C ++ 11 em diante)

Se você estiver usando a versão C ++ 11, essa é a maneira mais elegante de iterar o mapa em C++. Você pode evitar loops tradicionais de cigarros e usar isso em vez disso.

#incluir
#incluir
#incluir
usando namespace std;
int main ()
// Inicialize um mapa
mapa countrycapitalmap;
// Insira diferentes elementos no mapa
countrycapitalmap.Insira (par("Índia", "Delhi"));
countrycapitalmap.Insira (par("Nepal", "Kathmandu"));
countrycapitalmap.Insira (par("China", "Pequim"));
countrycapitalmap.Insira (par("França", "Paris"));
// itera usando o iterador para loop
para (Const Auto & ELE: CountryCapitalMap)
cout <
retornar 0;
Saída:
China: Pequim
França: Paris
Índia: Delhi
Nepal: Kathmandu

Usando range baseado em loop com pares de valores-chave (versão C ++ 17 em diante)

Esta versão é suportada a partir de C ++ 17 em diante e fornece uma maneira mais flexível de iterar sobre o mapa. Você pode acessar explicitamente o par de valores-chave no mapa, que fornece solução ainda mais legível.

#incluir
#incluir
#incluir
usando namespace std;
int main ()
// Inicialize um mapa
mapa countrycapitalmap;
// Insira diferentes elementos no mapa
countrycapitalmap.Insira (par("Índia", "Delhi"));
countrycapitalmap.Insira (par("Nepal", "Kathmandu"));
countrycapitalmap.Insira (par("China", "Pequim"));
countrycapitalmap.Insira (par("França", "Paris"));
// itera usando o iterador para loop
para (const Auto & [Key, Value]: CountryCapitalMap)
cout << key << ":" << value << "\n";

retornar 0;
Saída:
China: Pequim
França: Paris
Índia: Delhi
Nepal: Kathmandu

Isso é tudo sobre como iterar sobre o mapa em c++.