반복자는 컨테이너의 요소를 반복하는 데 사용되는 포인터와 같은 객체입니다. 반복자를 사용하는 주요 이점은 공통 인터페이스를 만들고 알고리즘을 구현하는 데 사용되는 컨테이너 유형에 영향을 받지 않도록 하는 것입니다.
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