std::counted_iterator<I>:: operator++,+,+=,--,-,-=
From cppreference.net
<
cpp
|
iterator
|
counted iterator
|
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)
|
두 반복자 어댑터 간의 거리를 계산함
(함수 템플릿) |