std::bidirectional_iterator

std::bidirectional_iterator (양방향 반복자 컨셉)

forward_iterator를 정제해 반복자를 뒤로 이동할 수 있는 능력을 추가하는 컨셉이에요. C++20부터 있어요.

출처: cppreference

본문

<iterator> 헤더에 정의돼 있어요.

template< class I >
    concept bidirectional_iterator =
        std::forward_iterator<I> &&
        std::derived_from</*ITER_CONCEPT*/<I>, std::bidirectional_iterator_tag> &&
        requires(I i) {
            { --i } -> std::same_as<I&>;
            { i-- } -> std::same_as<I>;
        };

bidirectional_iterator 컨셉은 forward_iterator를 정제해 반복자를 뒤로 이동할 수 있는 능력을 추가해요.

반복자 컨셉 결정

/*ITER_CONCEPT*/<I>ITER_TRAITS<I>::iterator_concept이 유효하면 그 타입을, 아니면 iterator_category가 유효하면 그 타입을, 아니면 iterator_tag_t<iter_traits_t<I>>를 나타내요.

의미 요구사항

--ii--의 의미가 반복자를 앞으로 한 번 이동하는 것의 역임을 요구해요.

  • --ii를 감소시키고 그 결과를 참조로 돌려줘요.
  • i--는 감소 전의 값을 돌려줘요.

더 알아보기 (Learn more)

cppreference