Namespaces
Variants

operator+,-(ranges::concat_view::iterator)

cppreference.net에서
 
 
Ranges 라이브러리
Range 어댑터
 
 
friend constexpr /*iterator*/
    operator+( const /*iterator*/& it, difference_type n )
        requires /*concat-is-random-access*/<Const, Views...>;
(1) (C++26부터)
friend constexpr /*iterator*/
    operator+( difference_type n, const /*iterator*/& it )
        requires /*concat-is-random-access*/<Const, Views...>;
(2) (C++26부터)
friend constexpr /*iterator*/
    operator-( const /*iterator*/& it, difference_type n )
        requires /*concat-is-random-access*/<Const, Views...>;
(3) (C++26부터)
friend constexpr difference_type
    operator-( const /*iterator*/& x, const /*iterator*/& y )
        requires /*concat-is-random-access*/<Const, Views...>;
(4) (C++26부터)
friend constexpr difference_type
    operator-( const /*iterator*/& x, std::default_sentinel_t )
        requires /* see description */;
(5) (C++26부터)
friend constexpr difference_type
    operator-( std::default_sentinel_t, const /*iterator*/& x )
        requires /* see description */;
(6) (C++26부터)

iterator를 증가 또는 감소시킵니다.

1) auto t = it; t += n; return t;와 동일합니다.
2) return it + n;와 동일합니다.
3) auto t = it; t -= n; return t;와 동일합니다.
4) Ix을 x.it_ .index()로 하고 Iy을 y.it_ .index()라고 할 때:
  • Ix > Iy이 true인 경우, difference_type result = ranges::distance(y.get-iter <Iy>(), y.get-end <Iy>());
    for (std::size_t I = Iy + 1; I < Ix; I++)
        result += ranges::distance(x.get-view <I>());
    return result + ranges::distance(x.get-begin <Ix>(), x.get-iter <Ix>());
    와 동일합니다.
  • 그렇지 않고, Ix < Iy이 true인 경우, return -(y - x);와 동일합니다.
  • 그 외의 경우, return x.get-iter <Ix>() - y.get-iter <Iy>();와 동일합니다.
x.it_ .valueless_by_exception() || y.it_ .valueless_by_exception()이 true이면 동작이 정의되지 않습니다.
5) Ix을 x.it_ .index()라고 할 때, difference_type result = ranges::distance(x.get-iter <Ix>(), x.get-end <Ix>());
for (std::size_t I = Ix + 1, count = sizeof...(Views); I < count; I++)
    result += ranges::distance(x.get-view <I>());
return -result;
와 동일합니다.
Fs을 Views의 첫 번째 요소를 제외한 모든 요소로 구성된 팩이라고 할 때, requires 절의 표현식은

(std::sized_sentinel_for<ranges::sentinel_t<maybe-const <Const, Views>>,
                         ranges::iterator_t<maybe-const <Const, Views>>> && ...) &&
    (ranges::sized_range<maybe-const <Const, Fs>> && ...)

와 동일합니다.
x.it_ .valueless_by_exception()이 true이면 동작이 정의되지 않습니다.
6) return -(x - std::default_sentinel);와 동일합니다.
Fs을 Views의 첫 번째 요소를 제외한 모든 요소로 구성된 팩이라고 할 때, requires 절의 표현식은

(std::sized_sentinel_for<ranges::sentinel_t<maybe-const <Const, Views>>,
                         ranges::iterator_t<maybe-const <Const, Views>>> && ...) &&
    (ranges::sized_range<maybe-const <Const, Fs>> && ...)

와 동일합니다.
x.it_ .valueless_by_exception()이 true이면 동작이 정의되지 않습니다.

이 함수들은 일반적인 비정규 또는 정규 검색으로는 볼 수 없으며, 인자 종속 검색을 통해서만 찾을 수 있습니다(단, concat_view::iterator <Const>이 인자의 연관된 클래스인 경우).

매개변수

it, x, y - the iterators
n - 현재 위치에 상대적인 위치

반환값

위에서 설명한 바와 같습니다.

예제

참고 항목

기본 반복자를 전진 또는 후진시킵니다
(public member function)