[c++] 사용자 정의 반복자 구현

C++에서 사용자 정의 반복자(custom iterator)는 여러 종류의 컨테이너나 데이터 구조를 반복할 때 사용할 수 있습니다. 이는 표준 라이브러리(Standard Library)의 반복자와 유사한 인터페이스를 제공함으로써 다른 라이브러리와 통합하기 용이하게 만들어줍니다.

1. 사용자 정의 반복자의 요구사항

사용자 정의 반복자를 만들기 위해서는 다음과 같은 요구사항을 충족해야 합니다.

2. 사용자 정의 반복자의 구현

아래는 간단한 사용자 정의 반복자의 예시입니다. 이 예제에서는 이터레이터가 정수 벡터를 순회하도록 구현되었습니다.

#include <iostream>
#include <vector>

class CustomIterator {
public:
    using ValueType = int;

    CustomIterator(std::vector<ValueType>& vec, size_t index) : vec(vec), index(index) {}

    CustomIterator& operator++() {
        ++index;
        return *this;
    }

    ValueType& operator*() {
        return vec[index];
    }

    bool operator!=(const CustomIterator& other) const {
        return index != other.index;
    }

private:
    std::vector<ValueType>& vec;
    size_t index;
};

int main() {
    std::vector<int> data = {1, 2, 3, 4, 5};

    for (CustomIterator it(data, 0); it != CustomIterator(data, data.size()); ++it) {
        std::cout << *it << " ";
    }

    return 0;
}

위 예제에서 CustomIterator 클래스는 멤버 데이터와 연산자 오버로딩을 사용하여 사용자 정의 반복자를 구현합니다.

3. 마무리

C++에서 사용자 정의 반복자를 만들기 위해서는 필수적으로 특정한 연산자와 타입을 정의해야 합니다. 사용자 정의 반복자를 효과적으로 사용하면 다양한 데이터 구조를 표준 라이브러리와 호환되는 방식으로 반복할 수 있게 됩니다.

더 많은 정보를 원하시면 C++ 공식 문서를 확인해보세요!