std::forward_iterator

std::forward_iterator (순방향 반복자 컨셉)

input_iterator를 정제해 다중 패스 알고리즘에 적합하게 하고, 같은 범위의 두 반복자를 서로 비교할 수 있음을 보장하는 컨셉이에요. C++20부터 있어요.

출처: cppreference

본문

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

template< class I >
    concept forward_iterator =
        std::input_iterator<I> &&
        std::derived_from</*ITER_CONCEPT*/<I>, std::forward_iterator_tag> &&
        std::incrementable<I> &&
        std::sentinel_for<I, I>;

이 컨셉은 std::input_iterator를 정제해, Istd::incrementable을 모델링할 것(따라서 다중 패스 알고리즘에 적합함)을 요구하고, 같은 범위의 두 반복자를 서로 비교할 수 있음을 보장해요.

반복자 컨셉 결정

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

의미 요구사항

forward_iterator<I>가 모델링되려면 다음이 성립해야 해요.

  • [i, s)가 범위를 나타내는 반복자·센티널 i, s에 대해, i의 사본 j++를 적용해도 반복자가 남긴 대상의 역참조가 변경되지 않는다(다중 패스 보장).

더 알아보기 (Learn more)

cppreference