반복자는 컨테이너의 요소를 반복하는 데 사용되는 포인터와 같은 객체입니다. 반복자를 사용하는 주요 이점은 공통 인터페이스를 만들고 알고리즘을 구현하는 데 사용되는 컨테이너 유형에 영향을 받지 않도록 하는 것입니다.
C++ 표준 라이브러리에는 반복자의 유형이 있습니다 -
- 순방향 반복자
- 양방향 반복자
- 입력 반복자
- 출력 반복자
- 랜덤 액세스 반복자
프로그램은 위의 반복자 중 데이터 구조에서 사용하는 반복자를 확인하는 것입니다.
사용된 반복기의 유형을 결정하는 데 유용할 수 있는 몇 가지 요소가 있습니다.
-
유형 ID , 런타임에 유형 식별 정보를 반환합니다.
-
반복자 특성 , iterator가 소유하는 속성을 정의합니다.
-
반복자 카테고리 iterator가 속한 범주를 정의하는 데 사용됩니다.
예시
#include <bits/stdc++.h> using namespace std; template <class T> string iteratortype(T iterator){ if (typeid(typename iterator_traits<T>::iterator_category) == typeid(input_iterator_tag)) return "Input"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(output_iterator_tag)) return "Output"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(forward_iterator_tag)) return "Forward"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(bidirectional_iterator_tag)) return "Bidirectional"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(random_access_iterator_tag)) return "Random_Access"; return "Missing"; } int main(){ vector<int> vec; auto iter = vec.begin(); cout <<iteratortype(iter) << " Iterator\n"; return 0; }
출력
Random_Access Iterator