컨테이너와 범위 기반 for 반복문
C++11의 범위 기반 for 구문으로 컨테이너를 깔끔하게 순회합니다.
컨테이너와 범위 기반 for 반복문은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
현대적인 반복문
C++11에서는 범위 기반 for 반복문이 도입되었습니다 — 명시적인 인덱스나 반복자 없이 모든 컨테이너를 순회할 수 있습니다. 더 깔끔하고 실수하기도 어렵습니다.
std::vector<int> v = {1, 2, 3, 4, 5};
for (int x : v) {
std::cout << x << " ";
}값으로 순회하기
위 예제는 각 요소를 x에 복사합니다. int처럼 복사 비용이 낮은 형식에는 괜찮지만, 큰 객체에는 비효율적입니다.
const 참조로 순회하기
복잡한 형식에는 const auto&를 사용하여 복사를 피하고 요소를 수정하지 않겠다는 의도를 나타내십시오.
std::vector<std::string> names = {"Ada", "Bob"};
for (const auto& name : names) {
std::cout << name << "\n";
}수정을 위한 참조 순회
요소를 그 자리에서 수정하려면 일반 참조를 사용하십시오.
std::vector<int> v = {1, 2, 3};
for (auto& x : v) {
x *= 10;
}
// v is now {10, 20, 30}형식 추론을 위한 auto
컴파일러가 요소의 형식을 추론하도록 하십시오. 문자열, 구조체의 벡터, 맵을 다룰 때 입력해야 할 코드가 크게 줄어듭니다.
맵 순회하기
각 요소는 std::pair<const Key, Value>입니다. 더 깔끔한 코드를 위해 구조적 바인딩(C++17)을 사용하십시오.
std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
std::cout << name << ": " << age << "\n";
}문자열 순회하기
std::string은 char의 컨테이너입니다.
std::string s = "hello";
for (char c : s) {
std::cout << c << " ";
}초기화 목록 반복문
중괄호로 묶은 목록을 직접 범위 기반 반복문으로 순회할 수 있습니다.
for (int n : {1, 2, 4, 8, 16}) {
std::cout << n << " ";
}역방향 범위 기반 반복문
일반적인 범위 기반 for는 앞에서 뒤로 진행합니다. 역순으로 순회하려면 std::ranges::reverse_view(C++20) 또는 수동 역방향 반복자를 사용하십시오.
#include <ranges>
for (auto x : v | std::views::reverse) {
std::cout << x;
}제한 사항
범위 기반 for로는 다음을 수행할 수 없습니다:
- 별도의 카운터 없이 현재 인덱스를 알기
- 요소를 건너뛰거나 순회 중 컨테이너를 수정하기
- 두 컨테이너를 병렬로 순회하기 (일반 for 또는 zip 사용)
범위 기반 for에서 사용자 지정 형식 사용하기
직접 만든 클래스가 범위 기반 for와 작동하게 하려면 반복자를 반환하는 begin() 및 end() 멤버나 독립 함수를 제공하십시오.
빠른 확인
컨테이너의 요소를 수정하는 범위 기반 for 반복문의 형태는 무엇입니까?
복습
범위 기반 for는 순회에 가장 깔끔한 방법입니다. 기본적으로 const auto&를 사용하고, 수정하려면 auto&를 사용하며, 쌍과 튜플을 구조 분해하려면 구조적 바인딩을 사용하십시오.
자주 묻는 질문
“컨테이너와 범위 기반 for 반복문” 강의는 무료인가요?
네 — “컨테이너와 범위 기반 for 반복문” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“컨테이너와 범위 기반 for 반복문”에서 뭘 배우나요?
C++11의 범위 기반 for 구문으로 컨테이너를 깔끔하게 순회합니다. 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C++ Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“컨테이너와 범위 기반 for 반복문” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 분기: if-else, 삼항 연산자, switch-case
- 반복문 패턴: for, while, do-while
- 컨테이너와 범위 기반 for 반복문
- 조기 반환, break, continue 및 goto