Namespaces
Variants

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

cppreference.net에서
 
 
범위 라이브러리
범위 어댑터
 
 
template< bool Const >
class /*iterator*/
(C++23부터)
(설명 전용*)

반환 타입은 adjacent_view::begin이며, adjacent_view::end의 반환 타입이기도 합니다. 단, 기본 뷰 V가 common_range인 경우에만 해당합니다.

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

멤버 타입

멤버 정의
Base (비공개) maybe-const <Const, 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>

데이터 멤버

멤버 설명
std::array<ranges::iterator_t<Base>, N> current_ (비공개) 반복자의 배열
(설명 전용 멤버 객체*)

멤버 함수

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++ 관련 용어는 번역하지 마십시오. 정확성과 전문성이 요구됩니다.