std::ranges::adjacent_view<V,N>:: iterator
From cppreference.net
<
cpp
|
ranges
|
adjacent view
|
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)
|
반복자 연산을 수행함
(함수) |
|
(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 태그나 속성은 번역하지 마십시오. 원래 서식을 유지하십시오.
,
,