Има няколко начина за повторение на картата в 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 ++. Честито кодиране!