기본 패턴
cpp
auto it = values.begin();
if (it != values.end()) {
std::cout << *it << "\n";
}설명
- 반복자는 컨테이너 원소를 가리키는 일반화된 "위치" 개념으로, STL 알고리즘이 컨테이너 종류와 무관하게 동작하게 해 줍니다.
begin()은 첫 원소 위치,end()는 마지막 원소 다음 위치를 뜻하므로, 순회 범위는 보통[begin, end)반열림 구간으로 이해합니다.- 값에 접근할 때는
*it, 다음 위치로 이동할 때는++it를 사용합니다. std::sort,std::find,std::accumulate같은 알고리즘이 반복자 쌍을 받는 이유는 컨테이너가 아니라 "범위"를 추상화하기 위해서입니다.- 벡터 삽입/삭제 후 반복자가 무효화될 수 있다는 점까지 알아 두면, STL 버그의 큰 부분을 더 빨리 이해할 수 있습니다.
짧은 예제
cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> values{10, 20, 30};
for (auto it = values.begin(); it != values.end(); ++it) {
std::cout << *it << " ";
}
}빠른 정리
| 항목 | 설명 |
|---|---|
begin() | 첫 원소를 가리키는 반복자 |
end() | 마지막 다음 위치를 가리키는 반복자 |
*it | 현재 원소 참조 |
++it | 다음 원소 위치로 이동 |
| 알고리즘 연결 | 컨테이너와 STL 알고리즘을 이어 주는 핵심 추상화 |
주의할 점
end()는 실제 원소가 아니라 "끝 다음"을 뜻하므로 역참조하면 안 됩니다. it != end() 검사를 먼저 하는 습관이 중요합니다.