[C++ STL] random-access-iterator (vector iterator)

오젼·2022년 8월 31일
0

[C++ STL]

목록 보기
5/11

custom iterator

random-access-iterator property

OCCF

  • default-constructor, copy-constructor, copy-assignment operator, desturctor를 구현해줘야 한다.

a == b, a != b

  • 비교연산자 ==, !=

*a, a->

  • 포인터 역참조값을 반환하는 *, 포인터를 반환하는 ->(흠 pair로 vector 구현했을 때 ->first, ->second로 접근할 수 있는데 그럴 때 필요한 거 같음)
  • const가 아닌 경우 lvalue로 역참조값 바꿀 수 있어야 함

++a, a++, *a++, --a, a--, *a--

  • 증감연산
  • 🚨 흠 근데 *a++, *a-- 는 *a 구현하면 알아서 되는 거 아닌가..? 왜 따로 있지

a + n, a - n

  • 포인터 + integer, 포인터 - integer 모두 가능한 것과 같음

a - b

  • 포인터 - 포인터 하면 포인터 간 거리 알 수 있는 거랑 똑같.
  • ptrdiff_t 반환해주면 됨

a < b, a > b

  • private 멤버인 _ptr 포인터 값으로 대소 비교

a <= b, a >= b

  • 구현한 <, > 사용해서 !(a>b), !(a<b) 로 비교해주면 됨

a += n, a -= n

  • private 멤버변수 _ptr에 인티저 덧셈 뺄셈 연산하고 그 값으로 업데이트

operator[]

  • vector의 경우 []으로 접근 가능. _ptr[n] 리턴해주면 됨

0개의 댓글