[C++ STL] random-access-iterator (vector iterator)
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] 리턴해주면 됨