C++ named requirements: LegacyRandomAccessIterator
LegacyRandomAccessIterator 는 상수 시간 내에 임의의 요소를 가리키도록 이동할 수 있는 LegacyBidirectionalIterator 입니다.
만약
LegacyRandomAccessIterator
it
이
Container
에서 비롯된 경우,
it
의
value_type
은 컨테이너의 것과 동일하므로, 역참조(
*
it
)를 통해 컨테이너의
value_type
을 얻을 수 있습니다.
배열 요소에 대한 포인터는 LegacyRandomAccessIterator 의 모든 요구 사항을 충족합니다.
목차 |
요구사항
타입
It
는 다음 조건을 만족할 때
LegacyRandomAccessIterator
를 만족합니다
-
타입
It은 LegacyBidirectionalIterator 를 만족합니다
그리고, 주어진
-
value_type, std:: iterator_traits < It > :: value_type 로 표시되는 타입 -
difference_type, std:: iterator_traits < It > :: difference_type 로 표시되는 타입 -
reference, std:: iterator_traits < It > :: reference 로 표시되는 타입 -
i
,
a
,
b
,
It또는 const It 타입의 객체들 -
r
,
It타입의 lvalue -
n
,
difference_type타입의 정수
다음 표현식들은 유효해야 하며 지정된 효과를 가져야 합니다:
| 표현식 | 반환 타입 | 연산 의미론 | 참고 사항 | ||||
|---|---|---|---|---|---|---|---|
| r + = n |
It&
|
difference_type m
=
n
;
if
(
m
>=
0
)
while
(
m
--
)
++
r
;
|
|
||||
|
a
+
n
n + a |
It
|
It temp
=
a
;
return temp + = n ; |
|
||||
| r - = n |
It&
|
return r + = - n ; |
n
의 절대값은
difference_type
의 표현 가능한 값 범위 내에 있어야 합니다.
|
||||
| i - n |
It
|
It temp
=
i
;
return temp - = n ; |
|||||
| b - a |
difference_type
|
return
n
;
(전제조건 참조) |
전제조건:
사후조건:
|
||||
| i [ n ] |
reference
로 변환 가능
|
* ( i + n ) | |||||
| a < b |
|
다음 표현식과 동등함 return b - a > 0 ; |
사전 조건:
엄격한 전체 순서 관계:
|
||||
| a > b |
|
b < a | a < b 의 반대인 전체 순서 관계 | ||||
| a >= b |
|
! ( a < b ) | |||||
| a <= b |
|
! ( a > b ) |
위 규칙들은 LegacyRandomAccessIterator 가 LessThanComparable 도 구현함을 의미합니다.
mutable LegacyRandomAccessIterator 는 추가적으로 LegacyOutputIterator 요구사항을 충족하는 LegacyRandomAccessIterator 입니다.
개념(Concept)std::iterator_traits 의 정의를 위해 다음의 설명 전용(explanation-only) 개념이 정의됩니다.
여기서 설명 전용 개념
|
(C++20 이후) |
결함 보고서
다음 동작 변경 결함 보고서는 이전에 게시된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
|
LWG 299
( N3066 ) |
C++98 |
a
[
n
]
의 반환 타입이
const value_type & 로 변환 가능해야 했음 |
반환 타입이
reference
로 변환 가능해야 함
|
| LWG 448 | C++98 |
a
[
n
]
의 반환 타입이
value_type
로 변환 가능해야 했음
|
반환 타입이
const value_type & 로 변환 가능해야 함 [1] |
| LWG 1079 | C++98 |
b
-
a
가
a
<
b
를 사용하여 정의됨,
순환 정의가 발생했음 |
정의에서 a < b 를 제거함 |
|
LWG 2114
( P2167R3 ) |
C++98 | bool 로의 변환 가능성이 구현의 기대를 반영하기에 너무 약했음 | 요구 사항이 강화됨 |
- ↑ LWG issue 299 이 해결 이후 다시 열렸습니다.
참고 항목
|
(C++20)
|
bidirectional_iterator
가 상수 시간 내 전진 및 첨자 연산을 지원하는 임의 접근 반복자임을 명시함
(컨셉) |
| 반복자 라이브러리 | 반복자, 반복자 특성, 어댑터 및 유틸리티 함수에 대한 정의를 제공함 |