Как да повторите картата в C ++

How Iterate Over Map C



В този бърз урок ще видим как да се повтори в картата в C ++.

Има няколко начина за повторение на картата в C ++. С по -новите версии на C ++ има по -усъвършенствани начини за повторение на картата в C ++.







Нека преминем през всеки един по един.



Използване на цикъл for с stp :: map

Създадохме карта с име | _+_ | и вмъкна двойки ключ-стойност към него.



<за>
#включва
#включва
#включва
#включва
#включва
използвайки пространство на именатачаса;
intглавен() {
// Инициализиране на карта
карта>'Индия','Делхи'));
countryCapitalMap.вмъкване(чифт<низ, низ>('Непал','Катманду'));
countryCapitalMap.вмъкване(чифт<низ, низ>(„Китай“,'Пекин'));
countryCapitalMap.вмъкване(чифт<низ, низ>('Франция','Париж'));

// Итерация с помощта на итератор в for цикъл
за (Автоматиченitr=countryCapitalMap.започнете();itr!=countryCapitalMap.край();itr++)
{
часа::цена <<itr->първо// Ключ за достъп
<< ':'
<<itr->второ// Достъпна стойност
<<часа::endl;
}
връщане 0;
}
</за>
Изход:
<за>
Китай:Пекин
Франция:Париж
Индия:Делхи
Непал:Катманду
</за>

Както можете да видите, ние сме отпечатали държава: capital (ключ: стойност), използвайки цикъл for.





Ако забележите, използвахме | _+_ | спецификатор на тип за итератор на карти поради четливост. Можете да използвате | _+_ | изрично също.
Забележка: Ако видите изхода, той е сортиран по ключове във възходящ ред. Това е така, защото std :: map е сортиран асоциативен контейнер с предоставен Comparator (версия C ++ 11 нататък). Тъй като не предоставихме никакъв сравнител, така че C ++ използва стандартния компаратор за низ.

Използване на цикъл while със stp :: map

Можем също да използваме цикъл while вместо цикъл for.



<за>
#включва
#включва
#включва
#включване>
използвайки пространство на именатачаса;
intглавен() {
// Инициализиране на карта
карта<низ, низ>countryCapitalMap;
// Вмъкване на различни елементи в картата
countryCapitalMap.вмъкване(чифт<низ, низ>('Индия','Делхи'));
countryCapitalMap.вмъкване(чифт<низ, низ>('Непал','Катманду'));
countryCapitalMap.вмъкване(чифт<низ, низ>(„Китай“,'Пекин'));
countryCapitalMap.вмъкване(чифт<низ, низ>('Франция','Париж'));


// Създаване на итератор за картата и инициализиране с start
Автоматиченitr=countryCapitalMap.започнете();
// Итерация с помощта на итератор в цикъла while
докато (itr!=countryCapitalMap.край())
{
часа::цена <<itr->първо// Ключ за достъп
<< ':'
<<itr->второ// Достъпна стойност
<<часа::endl;
itr++;
}
връщане 0;
}
</за>
Изход:
<за>
Китай:Пекин
Франция:Париж
Индия:Делхи
Непал:Катманду
</за>

Използване на диапазон, базиран на цикъл (версия на C ++ 11 нататък)

Ако използвате C ++ 11 версия, това е най -елегантният начин за повторение на картата в C ++. Можете да избегнете традиционните заоблени цикли и да използвате това вместо това.

<за>
#включва
#включва
#включва

използвайки пространство на именатачаса;
intглавен() {
// Инициализиране на карта
карта<низ, низ>countryCapitalMap;
// Вмъкване на различни елементи в картата
countryCapitalMap.вмъкване(чифт<низ, низ>('Индия','Делхи'));
countryCapitalMap.вмъкване(чифт<низ, низ>('Непал','Катманду'));
countryCapitalMap.вмъкване(чифт<низ, низ>(„Китай“,'Пекин'));
countryCapitalMap.вмъкване(чифт<низ, низ>('Франция','Париж'));


// Итерация с помощта на итератор в for цикъл
за (const Автоматичен &той:countryCapitalMap) {
цена <<той.първо << ':' <<той.второ<<'н';
}

връщане 0;
}
</за>
Изход:
Китай:Пекин
Франция:Париж
Индия:Делхи
Непал:Катманду

Използване на диапазон за цикъл с двойки ключ-стойност (версия C ++ 17 нататък)

Тази версия се поддържа от c ++ 17 нататък и предоставя по -гъвкав начин за повторение на картата. Можете изрично да получите достъп до двойка ключ-стойност в картата, което предоставя още по-четимо решение.

<за>
#включва
#включва
#включва

използвайки пространство на именатачаса;
intглавен() {
// Инициализиране на карта
карта<низ, низ>countryCapitalMap;
// Вмъкване на различни елементи в картата
countryCapitalMap.вмъкване(чифт<низ, низ>('Индия','Делхи'));
countryCapitalMap.вмъкване(чифт<низ, низ>('Непал','Катманду'));
countryCapitalMap.вмъкване(чифт<низ, низ>(„Китай“,'Пекин'));
countryCapitalMap.вмъкване(чифт<низ, низ>('Франция','Париж'));


// Итерация с помощта на итератор в for цикъл
за (const Автоматичен& [ключ, стойност] :countryCapitalMap) {
цена <<ключ<< ':' <<стойност<< 'н';
}

връщане 0;
}
</за>
Изход:
Китай:Пекин
Франция:Париж
Индия:Делхи
Непал:Катманду

Това е всичко за това как да повторите картата в C ++. Честито кодиране!