4. 양방향 반복자는 순방향 반복자와 같은 기능에 역방향으로 이동할 수 있다. 따라서 반복자를 증가시켜 다음 원소로 이동하는 것도 가능하고 --iter나 iter-- 같은 감소 연산자로 이전 원소로 이동하는 것도 가능하다.
5. 랜덤 액세스 반복자는 양방향 반복자와 같은 기능에 원소들에 마음대로 접근할 수 있는 기능을 더한 것이다. 양방향 반복자에서 허용되는 연산에 다음 연산을 지원한다.
• 정수만큼 증가하거나 감소: iter + n, iter - n, iter += n, iter -= n
• 정수로 인덱스 접근: iter[n], *(iter+n)으로 표현한 것과 같음
• 두 반복자의 차이: iter1 - iter2, 원소들의 차이를 정수로 반환
• 반복자 비교: iter1 < iter2, iter1 > iter<= iter2, iter1 >= iter2
범위로 지정된 원소들을 정렬하려면 범위를 랜덤 액세스 반복자로 지정해야 한다. 랜덤 액세스 반복자는 첨자 연산자 []를 사용할 수 있다. 반복자 first가 있다면 first[3]은 *(first + 3)과 같으며 4번째 원소에 접근하라는 뜻이 된다. 일반적으로 iter[n]에서 iter는 반복자, n은 오프셋이므로 iter[n]은 iter에서 오프셋 n만큼 떨어진 원소를 반환한다. 반복자의 첨자 연산자에 사용하는 인덱스는 검사되지 않는 것에 주의하자. 인덱스 값이 적법한 범위를 벗어난 값이어도 이를 막을 방법이 없다.