Namespaces
Variants

std::counted_iterator<I>:: operator++,+,+=,--,-,-=

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
constexpr counted_iterator & operator ++ ( ) ;
(1) (C++20부터)
constexpr decltype ( auto ) operator ++ ( int ) ;
(2) (C++20부터)
constexpr counted_iterator operator ++ ( int )
requires std:: forward_iterator < I > ;
(3) (C++20부터)
constexpr counted_iterator & operator -- ( )
requires std:: bidirectional_iterator < I > ;
(4) (C++20부터)
constexpr counted_iterator operator -- ( int )
requires std:: bidirectional_iterator < I > ;
(5) (C++20부터)
constexpr counted_iterator operator + ( std:: iter_difference_t < I > n ) const
requires std:: random_access_iterator < I > ;
(6) (C++20부터)
constexpr counted_iterator & operator + = ( std:: iter_difference_t < I > n )
requires std:: random_access_iterator < I > ;
(7) (C++20부터)
constexpr counted_iterator operator - ( std:: iter_difference_t < I > n ) const
requires std:: random_access_iterator < I > ;
(8) (C++20부터)
constexpr counted_iterator & operator - = ( std:: iter_difference_t < I > n )
requires std:: random_access_iterator < I > ;
(9) (C++20부터)

기본 반복자 current 와 끝까지의 거리 length 를 증가시키거나 감소시킵니다.

이 함수들의 동작은 length 가 음수 값으로 설정되는 경우 정의되지 않습니다.

1) 1씩 사전 증가합니다. 다음 코드와 동일합니다: ++ current ; -- length ; return * this ; .
2) 1씩 후위 증가. 다음과 동일함 -- length ; try { return current ++ ; } catch ( ... ) { ++ length ; throw ; } .
3) 후위 증가 연산으로 1씩 증가시킵니다. 다음 코드와 동일합니다: counted_iterator temp { * this } ; ++* this ; return temp ; .
4) 1만큼 사전 감소합니다. 다음 코드와 동일합니다: -- current ; ++ length ; return * this ; .
5) 후위 감소 연산을 수행합니다. 다음 코드와 동일합니다: counted_iterator temp { * this } ; --* this ; return temp ; .
6) n 만큼 진행된 반복자 어댑터를 반환합니다. 다음 코드와 동일합니다: return counted_iterator ( current + n, length - n ) ; .
7) 이터레이터 어댑터를 n 만큼 전진시킵니다. current + = n ; length - = n ; return * this ; 와 동일합니다.
8) - n 만큼 진행된 반복자 어댑터를 반환합니다. return counted_iterator ( current - n, length + n ) ; 와 동일합니다.
9) 이터레이터 어댑터를 - n 만큼 전진시킵니다. 다음 코드와 동일합니다: current - = n ; length + = n ; return * this ; .

목차

매개변수

n - 반복자 어댑터를 증가 또는 감소시킬 위치의 수

반환값

1) * this
2,3) 변경 전에 생성된 * this 의 복사본.
4) * this
5) 변경 전에 생성된 * this 의 사본.
6) n 만큼 진행되는 반복자 어댑터.
7) * this
8) - n 만큼 진행되는 반복자 어댑터.
9) * this

예제

#include <cassert>
#include <initializer_list>
#include <iterator>
int main()
{
    const auto v = {1, 2, 3, 4, 5, 6};
    std::counted_iterator<std::initializer_list<int>::iterator> it1{v.begin(), 5};
    ++it1;              assert(*it1 == 2 && it1.count() == 4); // (1)
    auto it2 = it1++;   assert(*it2 == 2 && *it1 == 3);        // (3)
    --it1;              assert(*it1 == 2 && it1.count() == 4); // (4)
    auto it3 = it1--;   assert(*it3 == 2 && *it1 == 1);        // (5)
    auto it4 = it1 + 3; assert(*it4 == 4 && it4.count() == 2); // (6)
    auto it5 = it4 - 3; assert(*it5 == 1 && it5.count() == 5); // (8)
    it1 += 3;           assert(*it1 == 4 && it1.count() == 2); // (7)
    it1 -= 3;           assert(*it1 == 1 && it1.count() == 5); // (9)
}

참고 항목

(C++20)
반복자를 전진시킴
(함수 템플릿)
(C++20)
두 반복자 어댑터 간의 거리를 계산함
(함수 템플릿)