Namespaces
Variants

std::ranges::join_with_view<V,Pattern>::iterator<Const>::operator++,--

From ko.cppreference.net
 
 
Ranges 라이브러리
Range 어댑터
 
 
constexpr /*iterator*/& operator++();
(1) (C++23부터)
constexpr void operator++( int );
(2) (C++23부터)
constexpr /*iterator*/ operator++( int )
    requires std::is_reference_v</*InnerBase*/> &&
             ranges::forward_range</*Base*/> &&
             ranges::forward_range</*InnerBase*/>;
(3) (C++23부터)
constexpr /*iterator*/& operator--()
    requires std::is_reference_v</*InnerBase*/> &&
             ranges::bidirectional_range</*Base*/> &&
             ranges::bidirectional_range</*InnerBase*/> &&
             ranges::common_range</*InnerBase*/> &&
             ranges::bidirectional_range</*PatternBase*/> &&
             ranges::common_range</*PatternBase*/>;
(4) (C++23부터)
constexpr /*iterator*/ operator--( int )
    requires std::is_reference_v</*InnerBase*/> &&
             ranges::bidirectional_range</*Base*/> &&
             ranges::bidirectional_range</*InnerBase*/> &&
             ranges::common_range</*InnerBase*/> &&
             ranges::bidirectional_range</*PatternBase*/> &&
             ranges::common_range</*PatternBase*/>;
(5) (C++23부터)

반복자를 증가시키거나 감소시킵니다.

1)내부 반복자를 std::visit([](auto& it){ ++it; }, inner_it_ );.을 사용한 것처럼 증가시킵니다.
그 후, 다음과 같이 내부 및 외부 반복자를 조정합니다:
  • 증가된 내부 반복자가 패턴 범위의 끝-다음 반복자인 경우, 다음 내부 범위의 시작을 가리키는 반복자로 설정합니다.
  • 증가된 내부 반복자가 내부 범위의 끝-다음 반복자인 경우, 외부 반복자를 증가시킵니다. 그 다음:
  • 증가된 외부 반복자가 외부 범위의 끝-다음 반복자가 아닌 경우, 내부 반복자를 패턴 범위의 시작을 가리키는 반복자로 설정합니다.
  • 그렇지 않고, std::is_reference_v<InnerBase >가 true인 경우, 내부 반복자를 단일 값을 보유하는 패턴 반복자로 설정합니다.
  • 내부 반복자가 끝-다음 반복자가 아니거나, 외부 반복자가 끝-다음 반복자가 될 때까지 위의 연산을 반복합니다.
2)++*this;와 동일합니다.
3)auto tmp = *this;
++*this;
return tmp;
와 동일합니다.
4)외부 반복자가 외부 범위의 끝-다음 반복자인 경우, 이를 감소시키고 내부 반복자를 마지막 내부 범위의 끝-다음 반복자로 설정합니다. 그렇지 않으면 아무것도 하지 않습니다.
그 후, 다음과 같이 내부 및 외부 반복자를 조정합니다:
  • 내부 반복자가 내부 범위의 시작을 가리키는 경우, 이를 패턴 범위의 끝-다음 반복자로 설정합니다.
  • 내부 반복자가 패턴 범위의 시작을 가리키는 경우, 외부 반복자를 감소시키고, 내부 반복자를 이전 내부 범위의 끝-다음 반복자로 설정합니다.
  • 내부 반복자가 어떤 범위의 시작도 가리키지 않을 때까지 위의 연산을 반복합니다.
마지막으로, std::visit([](auto& it){ --it; }, inner_it_ );을 사용한 것처럼 내부 반복자를 감소시킵니다.
5)auto tmp = *this;
--*this;
return tmp;
와 동일합니다.

반환값

1,4) * this
3,5) 변경 전에 생성된 * this 의 복사본.