Iterator

박호준·2021년 11월 22일
0

ft_containers

목록 보기
4/6

Iterator

  • 증감가 연산자 ++ / -- (후위, 전위)
  • [int] 연산자 iterator위치에서 int만큼 이동한 거리를 반환 (iterator 변화x)

ptrdiff_t :: 두 포인터의 차이를 뺀 결과의 정수형

Iterator vs const Iterator

  • Iterator : 원래 값을 바꿀 수 있음
  • const Iterator : 원래 값을 바꿀 수 없음

Iterator_traits

  • 반복자의 타입을 모아둔 것
template<class Iter>
struct iterator_traits {
     typedef typename Iter::iterator_category iterator_category;
     typedef typename Iter::value_type value_type;
     typedef typename Iter::difference_type difference_type;
     typedef typename Iter::pointer pointer;
     typedef typename Iter::reference reference;

};

Iterator_tag

  • 반복자의 속성 (빈클래스) => 상속관계만 알려줌
struct InputIteratorTag {};
struct OutputIteratorTag {};
struct ForwardIteratorTag : public InputIteratorTag {};
struct BidirectionalIteratorTag : public ForwardIteratorTag {};
struct RandomAccessIteratorTag : public BidirectionalIteratorTag {};

iterator <=> reviterator

rev iterator 는 iterator보다 하나 많은데 있고 base는 하나 뒤에있다
Input iterator : 전진만 가능, 한번에 하나만 읽기 가능
Output iterator : 전진만 가능, 한번에 하나만 쓰기 가능
Foward iterator : 전진만 가능, 한번에 여러개 읽고 쓰기 가능
Bidirectional iterator : 전/후진 모두 가능, 한번에 여러개 읽고 쓰기 가능
Random access iterator : 반복자를 임의의 위치만큼 전/후진 가능

profile
hopark

0개의 댓글