벡터 순회: 인덱스, 범위 기반 for, 반복자
인덱스 접근, 범위 기반 for 및 명시적 반복자로 벡터를 순회합니다.
벡터 순회: 인덱스, 범위 기반 for, 반복자은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
순회하는 세 가지 방법
다음과 같은 방법으로 vector를 순회할 수 있습니다.
- 인덱스 기반
for (size_t i = 0; i < v.size(); ++i) - 범위 기반
for (auto& x : v) - 반복자 기반
for (auto it = v.begin(); it != v.end(); ++it)
인덱스 기반 반복문
C에서 익숙하게 보던 방식입니다. 값과 함께 인덱스가 필요할 때 유용합니다.
for (size_t i = 0; i < v.size(); ++i) {
std::cout << i << ": " << v[i] << "\n";
}size_t와 int
size()는 부호 없는 형식인 size_t를 반환합니다. 부호 있는 int 카운터와 섞어 사용하면 컴파일러 경고와 미묘한 버그가 발생할 수 있습니다. size_t 또는 C++20의 std::ssize를 사용하십시오.
범위 기반 for
인덱스가 필요하지 않을 때 가장 깔끔한 형식입니다. 적절한 참조 한정자를 선택하십시오.
for (const auto& x : v) std::cout << x << " "; // read only
for (auto& x : v) x *= 2; // modify in place반복자
반복자는 일반화된 포인터입니다. v.begin()은 첫 번째 원소를 가리키고, v.end()는 마지막 원소의 바로 다음 위치를 가리킵니다.
for (auto it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}const_iterator
원소를 수정할 필요가 없다면 cbegin()과 cend()를 사용하십시오. 이때 반복자 형식은 const_iterator입니다.
역방향 반복자
rbegin()과 rend()는 뒤에서 앞으로 순회합니다. 역참조하면 같은 원소를 역순으로 얻습니다.
for (auto it = v.rbegin(); it != v.rend(); ++it) {
std::cout << *it << " ";
}반복자 산술
vector의 반복자는 무작위 접근 반복자이므로 정수를 더하거나 뺄 수 있고 <로 비교할 수도 있습니다.
auto it = v.begin();
it += 3; // skip 3 elements
std::cout << *it;알고리즘은 반복자를 사용합니다
STL 알고리즘은 반복자 쌍을 받습니다. v.begin(), v.end()를 std::sort나 std::find와 같은 알고리즘에 전달하십시오.
#include <algorithm>
std::sort(v.begin(), v.end());
auto it = std::find(v.begin(), v.end(), 42);반복자가 무효화되는 경우
vector에 원소를 추가하면 재할당이 발생할 수 있습니다. capacity를 변경하는 연산을 수행하면 vector를 가리키는 모든 반복자, 포인터 및 참조가 무효화됩니다.
주의할 점: 순회 중 수정하기
같은 vector를 범위 기반 for로 순회하는 동안 push_back이나 erase를 절대 호출하지 마십시오. 새 vector를 만들거나, 나중에 처리할 인덱스를 모아 두십시오.
빠른 확인
push_back으로 재할당이 발생하면 어떤 순회 방식의 반복자가 무효화됩니까?
복습
인덱스가 필요하지 않으면 범위 기반 for를, 필요하면 인덱스 기반 for를, 알고리즘을 사용할 때는 반복자 기반 for를 선택하십시오. 재할당이 반복자를 무효화하므로 순회 중에는 push_back을 호출하지 마십시오.
자주 묻는 질문
“벡터 순회: 인덱스, 범위 기반 for, 반복자” 강의는 무료인가요?
네 — “벡터 순회: 인덱스, 범위 기반 for, 반복자” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“벡터 순회: 인덱스, 범위 기반 for, 반복자”에서 뭘 배우나요?
인덱스 접근, 범위 기반 for 및 명시적 반복자로 벡터를 순회합니다. 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C++ Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“벡터 순회: 인덱스, 범위 기반 for, 반복자” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- std::vector 기초: push_back, size, capacity
- 벡터 순회: 인덱스, 범위 기반 for, 반복자
- 벡터 수정: insert, erase, clear
- 벡터, std::array 및 C 배열 비교