std::random_access_iterator

std::random_access_iterator (임의 접근 반복자 컨셉)

bidirectional_iterator를 정제해 상수 시간 전진·거리 계산·배열 표기(subscript)를 지원하는 컨셉이에요. C++20부터 있어요.

출처: cppreference

본문

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

template< class I >
    concept random_access_iterator =
        std::bidirectional_iterator<I> &&
        std::derived_from</*ITER_CONCEPT*/<I>, std::random_access_iterator_tag> &&
        std::totally_ordered<I> &&
        std::sized_sentinel_for<I, I> &&
        requires(I i, const I j, const std::iter_difference_t<I> n) {
            { i += n } -> std::same_as<I&>;
            { j +  n } -> std::same_as<I>;
            { n +  j } -> std::same_as<I>;
            { i -= n } -> std::same_as<I&>;
            { j -  n } -> std::same_as<I>;
            {  j[n]  } -> std::same_as<std::iter_reference_t<I>>;
        };

random_access_iterator 컨셉은 bidirectional_iterator를 정제해 +=, +, -=, - 연산자로 상수 시간 전진, -로 상수 시간 거리 계산, 그리고 첨자 []로 배열 표기를 지원해요.

의미 요구사항

반복자·센티널·차이 값에 대해, j + nj에서 n만큼 전진한 위치를, j[n]*(j + n)을, j - ii에서 j까지의 홉 수를 돌려줘요. n이 음수면 j + n은 감소를 의미해요.

더 알아보기 (Learn more)

cppreference