이 튜토리얼에서는 C++의 입력 반복기(Input Iterator)에 대해 자세히 알아보겠습니다.
입력 반복기는 STL(표준 템플릿 라이브러리)에서 제공하는 다섯 가지 반복기 중 하나로, 그중에서도 가장 단순하고 기능이 제한적인 반복기입니다. 주로 순차 입력 작업에 사용되며, 값을 하나씩 읽은 후 반복기가 다음 요소로 이동하는 방식으로 동작합니다.
입력 반복기의 특징
입력 반복기는 다음과 같은 특징을 가지고 있습니다.
- 값을 읽기만 가능하며, 참조된 요소를 수정할 수 없습니다.
- 단방향으로만 이동할 수 있어 한 번 지나간 요소를 다시 접근할 수 없습니다.
- 전방위 연산자(
++)를 통해서만 앞으로 이동합니다. - 동일한 위치를 두 번 읽는 것을 보장하지 않으므로, 단일 패스(single-pass) 알고리즘에 적합합니다.
예제 코드
다음 예제는 벡터(vector) 컨테이너를 반복기를 사용하여 순회하며 각 요소를 출력하는 프로그램입니다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v1 = { 1, 2, 3, 4, 5 };
// 반복기 선언
vector<int>::iterator i1;
// 반복기를 통해 요소를 하나씩 순회
for (i1 = v1.begin(); i1 != v1.end(); ++i1) {
cout << (*i1) << " ";
}
return 0;
}실행 결과
1 2 3 4 5
코드 설명
위 코드에서 v1.begin()은 벡터의 첫 번째 요소를 가리키는 반복기를 반환하고, v1.end()는 마지막 요소 다음 위치를 가리킵니다. 반복문이 실행되는 동안 역참조 연산자(*)를 사용하여 현재 반복기가 가리키는 값에 접근하고, 증가 연산자(++)를 통해 다음 요소로 이동합니다.
입력 반복기는 istream_iterator처럼 스트림에서 데이터를 순차적으로 읽어들이는 상황에서 특히 유용하게 활용됩니다. 다만 쓰기 작업이 필요하다면 출력 반복기(Output Iterator)를, 양방향 이동이 필요하다면 양방향 반복기(Bidirectional Iterator)를 사용하는 것이 좋습니다.