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)
|
반복자 연산을 수행함
(함수) |
|
(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 태그나 속성은 번역하지 마십시오. 원래 서식을 유지하십시오.
,
,