C++에서 맵을 반복하는 방법에는 여러 가지가 있습니다. 최신 버전의 C++에서는 C++에서 맵을 반복하는 고급 방법이 있습니다.
하나하나 살펴보겠습니다.
stp::map과 함께 for 루프 사용하기
|_+_|라는 이름의 지도를 만들었습니다. 키-값 쌍을 삽입했습니다.
<~을위한>
#포함하다
#포함하다
#포함하다
#포함하다
#포함하다
사용 네임스페이스시간;
정수기본() {
// 맵 초기화
지도>'인도','델리'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('네팔','카트만두'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('중국','베이징'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('프랑스','파리'));
// for 루프에서 iterator를 사용하여 반복
~을위한 (자동이터=국가자본지도.시작하다();이터!=국가자본지도.끝();이터++)
{
시간::비용 <<이터->첫 번째// 액세스 키
<< ':'
<<이터->두번째// 접근 값
<<시간::끝;
}
반품 0;
}
</~을위한>
산출:
<~을위한>
중국:베이징
프랑스:파리
인도:델리
네팔:카트만두
</~을위한>
보시다시피 for 루프를 사용하여 country:capital(key:value)을 인쇄했습니다.
참고로 |_+_|를 사용했습니다. 가독성 때문에 맵 반복기에 대한 유형 지정자. |_+_|를 사용할 수 있습니다. 그것도 명시적으로.
메모: 출력이 보이면 키를 기준으로 오름차순으로 정렬됩니다. std::map 은 Comparator(버전 C++11 이상)가 제공되는 정렬된 연관 컨테이너이기 때문입니다. 비교기를 제공하지 않았기 때문에 C++에서는 문자열에 기본 비교기를 사용했습니다.
stp::map과 함께 while 루프 사용하기
for 루프 대신 while 루프를 사용할 수도 있습니다.
<~을위한>#포함하다
#포함하다
#포함하다
#포함 >
사용 네임스페이스시간;
정수기본() {
// 맵 초기화
지도<문자열, 문자열>국가자본지도;
// 맵에 다른 요소 삽입
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('인도','델리'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('네팔','카트만두'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('중국','베이징'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('프랑스','파리'));
// 맵에 대한 반복자를 생성하고 begin으로 초기화합니다.
자동이터=국가자본지도.시작하다();
// while 루프에서 iterator를 사용하여 반복
동안 (이터!=국가자본지도.끝())
{
시간::비용 <<이터->첫 번째// 액세스 키
<< ':'
<<이터->두번째// 접근 값
<<시간::끝;
이터++;
}
반품 0;
}
</~을위한>
산출:
<~을위한>
중국:베이징
프랑스:파리
인도:델리
네팔:카트만두
</~을위한>
범위 기반 for 루프 사용(C++11 버전 이상)
C++11 버전을 사용하는 경우 C++에서 맵을 반복하는 가장 우아한 방법입니다. 전통적인 큐브 루프를 피하고 대신 사용할 수 있습니다.
<~을위한>#포함하다
#포함하다
#포함하다
사용 네임스페이스시간;
정수기본() {
// 맵 초기화
지도<문자열, 문자열>국가자본지도;
// 맵에 다른 요소 삽입
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('인도','델리'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('네팔','카트만두'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('중국','베이징'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('프랑스','파리'));
// for 루프에서 iterator를 사용하여 반복
~을위한 (상수 자동 &그:국가자본지도) {
비용 <<그.첫 번째 << ':' <<그.두번째<<'N';
}
반품 0;
}
</~을위한>
산출:
중국:베이징
프랑스:파리
인도:델리
네팔:카트만두
키-값 쌍으로 범위 기반 for 루프 사용(C++17 버전 이상)
이 버전은 C++17부터 지원되며 맵을 반복하는 보다 유연한 방법을 제공합니다. 훨씬 더 읽기 쉬운 솔루션을 제공하는 지도에서 키-값 쌍에 명시적으로 액세스할 수 있습니다.
<~을위한>#포함하다
#포함하다
#포함하다
사용 네임스페이스시간;
정수기본() {
// 맵 초기화
지도<문자열, 문자열>국가자본지도;
// 맵에 다른 요소 삽입
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('인도','델리'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('네팔','카트만두'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('중국','베이징'));
국가자본지도.끼워 넣다(쌍<문자열, 문자열>('프랑스','파리'));
// for 루프에서 iterator를 사용하여 반복
~을위한 (상수 자동& [핵심 가치] :국가자본지도) {
비용 <<열쇠<< ':' <<값<< 'N';
}
반품 0;
}
</~을위한>
산출:
중국:베이징
프랑스:파리
인도:델리
네팔:카트만두
이것이 C++에서 맵을 반복하는 방법에 관한 것입니다. 즐거운 코딩!