Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 출력 반복자(Output Iterator) 개념과 사용법 완전 정리

이번 튜토리얼에서는 C++ 프로그래밍에서 중요한 개념 중 하나인 출력 반복자(Output Iterator)에 대해 자세히 알아보겠습니다.

출력 반복자란 무엇인가?

C++에는 다섯 가지 주요 반복자 유형이 있습니다. 입력 반복자(Input Iterator), 출력 반복자(Output Iterator), 순방향 반복자(Forward Iterator), 양방향 반복자(Bidirectional Iterator), 임의 접근 반복자(Random Access Iterator)가 바로 그것입니다.

그중 출력 반복자는 입력 반복자와 정반대로 동작합니다. 즉, 값을 대입(쓰기)할 수는 있지만, 해당 위치의 값을 읽어오는 것은 불가능합니다. 이러한 특성 때문에 출력 반복자는 주로 컨테이너에 데이터를 기록하거나 복사하는 용도로 활용됩니다.

출력 반복자의 주요 특징

  • 쓰기 전용 접근: 역참조(*)를 통해 값을 대입할 수는 있지만, 그 값을 읽을 수는 없습니다.
  • 단일 패스(One-pass): 한 방향으로만 순회할 수 있으며, 같은 요소를 두 번 지나갈 수 없습니다.
  • 증가 연산 지원: ++ 연산자를 사용해 다음 요소로 이동할 수 있습니다.
  • 동등 비교 불가: 일반적으로 == 또는 != 연산으로 두 반복자를 비교하는 것이 제한될 수 있습니다.

예제 코드

다음 예제는 벡터의 모든 요소에 출력 반복자 방식으로 값을 대입하는 코드입니다.

#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){
        *i1 = 1; // 값 대입은 가능
    }
    return 0;
}

실행 결과

출력 없음 — 출력 반복자로는 값을 읽어올 수 없기 때문입니다.

정리

출력 반복자는 값을 쓸 수만 있고 읽을 수 없다는 점에서 입력 반복자와 뚜렷이 구분됩니다. 위 예제처럼 각 요소에 새로운 값을 대입하는 작업은 문제없이 수행되지만, cout으로 값을 출력하거나 조건문에서 값을 참조하려 하면 컴파일 오류나 예상치 못한 동작이 발생할 수 있습니다. 따라서 데이터를 읽어야 하는 상황이라면 입력 반복자나 순방향 반복자를 사용하는 것이 올바른 선택입니다.