Namespaces
Variants

std::ranges::adjacent_view<V,N>:: iterator

From cppreference.net
Ranges library
Range adaptors
template < bool Const >
class /*iterator*/
(C++23부터)
( 설명 전용* )

adjacent_view::begin 의 반환 타입, 그리고 adjacent_view::end 의 반환 타입(기본 뷰 V common_range 인 경우).

/*iterator*/ < true > 타입은 const 한정 오버로드에 의해 반환됩니다. /*iterator*/ < false > 타입은 non-const 한정 오버로드에 의해 반환됩니다.

목차

멤버 타입

멤버 타입 정의
Base (private) const V 만약 Const true 인 경우, 그렇지 않으면 V .
( 설명 전용 멤버 타입* )
iterator_category std:: input_iterator_tag
iterator_concept
value_type std:: tuple < /*REPEAT*/ ( ranges:: range_value_t < Base > , N ) ... > ;
difference_type ranges:: range_difference_t < Base >

데이터 멤버

멤버 객체 정의
current_ (private) std:: array < ranges:: iterator_t < Base > , N > .
( 설명 전용 멤버 객체* )

멤버 함수

iterator를 생성합니다
(public member function)
요소에 접근합니다
(public member function)
인덱스로 요소에 접근합니다
(public member function)
기본 iterator들을 전진시키거나 후퇴시킵니다
(public member function)

비멤버 함수

기본 반복자를 비교함
(함수)
반복자 연산을 수행함
(함수)
(C++23)
기본 반복자를 역참조한 결과를 해당 rvalue 참조 타입으로 캐스팅함
(함수)
(C++23)
두 기본 반복자가 가리키는 객체를 교환함
(함수)

예제

#include <cassert>
#include <concepts>
#include <list>
#include <ranges>
#include <tuple>
#include <utility>
#include <vector>
int main()
{
    auto v = std::vector{0, 1, 2, 3, 4, 5};
    auto i = (v | std::views::adjacent<3>).begin();
    using I = decltype(i);
    static_assert(std::same_as<I::value_type, std::tuple<int, int, int>>);
    static_assert(std::same_as<I::iterator_concept, std::random_access_iterator_tag>);
    // 사용 가능한 연산자들:
    ++i; i++; --i; i--; i += 2; i -= 2;
    assert(i[2] == std::tuple(2, 3, 4));
    using DI = decltype(*i);
    static_assert(std::same_as<DI, std::tuple<int&, int&, int&>>);
    std::get<1>(*i) = 42; // 반복자 i를 통해 v[1] 수정
    assert(v[1] == 42);
    auto l = std::list{0, 1, 2, 3, 4, 5};
    auto j = (l | std::views::adjacent<3>).begin();
    using J = decltype(j);
    static_assert(std::same_as<J::value_type, std::tuple<int, int, int>>);
    static_assert(std::same_as<J::iterator_concept, std::bidirectional_iterator_tag>);
    ++j; --j; j++; j--; // 사용 가능한 연산자들
    // j += 2; j -= 2;       // 오류: 이 연산자들은 양방향 반복자에 사용할 수 없음
    // std::ignore() = j[1]; //        양방향 반복자에 대해
}

참조문헌

  • C++23 표준 (ISO/IEC 14882:2024):
  • 26.7.25.3 클래스 템플릿 adjacent_view::iterator [range.adjacent.iterator]

참고 항목

웹페이지의 텍스트를 한국어로 번역합니다: HTML 태그나 속성은 번역하지 마십시오. 원래 서식을 유지하십시오. ,
,  태그 내부의 텍스트는 번역하지 마십시오.
C++ 관련 용어는 번역하지 마십시오. 정확성과 전문성이 요구됩니다.