1.7.3 양방향 반복자
앞서 반복자에 대해 설명할 때, 배열 기반의 임의 접근 반복자와 std::forward_list 기반의 순방향 반복자의 유연성 차이에 대해 알아봤습니다. std::list의 반복자는 이 두 반복자 중간 정도의 유연성을 가지고 있습니다. std::list의 반복자는 역방향으로 이동할 수 있으므로 std::forward_list보다 제약이 적습니다. 즉, std::list는 역방향으로의 연산이 필요한 경우에는 역방향 반복자(reverse iterator)를 사용할 수 있습니다. 그러나 std::list 반복자는 임의 접근 반복자보다는 유연하지 않습니다. std::list 반복자를 이용하여 어느 방향으로든 원하는 만큼 이동할 수 있지만, 임의 접근 반복자의 경우처럼 특정 위치로 한 번에 이동하는 것은 불가능합니다. 그러므로 std::list 반복자를 이용하여 특정 위치로 이동하는 작업은 선형 시간 복잡도를 가집니다. std::list 반복자는 어느 방향으로든 이동할 수 있으므로 양방향 반복자(bidirectional iterators)라고 부릅니다.