[c++] 사용자 정의 반복자 구현
C++에서 사용자 정의 반복자(custom iterator)는 여러 종류의 컨테이너나 데이터 구조를 반복할 때 사용할 수 있습니다. 이는 표준 라이브러리(Standard Library)의 반복자와 유사한 인터페이스를 제공함으로써 다른 라이브러리와 통합하기 용이하게 만들어줍니다.
1. 사용자 정의 반복자의 요구사항
사용자 정의 반복자를 만들기 위해서는 다음과 같은 요구사항을 충족해야 합니다.
iterator
,const_iterator
와 같은 필수 타입을 정의할 것operator++
,operator*
,operator->
및 필요한 다른 연산자를 오버로딩할 것typedef
나using
을 통해 필요한 형식(typedef)을 정의할 것
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++ 공식 문서를 확인해보세요!