C++ named requirements: ReversibleContainer
ReversibleContainer 는 Container 의 요구 사항을 충족하는 반복자를 가지며, 이 반복자들은 LegacyBidirectionalIterator 또는 LegacyRandomAccessIterator 의 요구 사항을 충족합니다. 이러한 반복자들은 ReversibleContainer 가 역방향으로 순회될 수 있도록 합니다.
목차 |
요구사항
타입이 다음 조건을 충족하면 ReversibleContainer 를 만족합니다: Container 요구사항을 충족하고, 해당 반복자 타입이 양방향 또는 임의 접근 반복자 범주 에 속하며, 아래 표에 제시된 타입과 값에 대해 의미론적 요구사항과 복잡도 요구사항이 충족되어야 합니다:
| 유형 | 정의 |
X
|
ReversibleContainer 타입 |
T
|
X
의
value_type
|
| 값 | 정의 |
| a |
X
타입의 값
|
타입
| 이름 | 유형 | 요구 사항 |
|---|---|---|
| typename X :: reverse_iterator | std:: reverse_iterator < X :: iterator > |
값 타입
이
T
인 반복자 유형
|
| typename X :: const_reverse_iterator | std:: reverse_iterator < X :: const_iterator > |
값 타입
이
T
인 상수 반복자 유형
|
표현식
다음 표에서
reverse_iterator
와
const_reverse_iterator
타입은 각각
typename
X
::
reverse_iterator
와
typename
X
::
const_reverse_iterator
를 나타냅니다.
| 표현식 | 타입 | 의미론 | 복잡도 |
|---|---|---|---|
| a. rbegin ( ) |
reverse_iterator
const_reverse_iterator
상수 객체의 경우
a
|
reverse_iterator ( a. end ( ) ) | 상수 시간 |
| a. rend ( ) |
reverse_iterator
const_reverse_iterator
상수 객체의 경우
a
|
reverse_iterator ( a. begin ( ) ) | 상수 시간 |
| a. crbegin ( ) |
const_reverse_iterator
|
const_cast < const X & > ( a ) . rbegin ( ) | 상수 시간 |
| a. crend ( ) |
const_reverse_iterator
|
const_cast < const X & > ( a ) . rend ( ) | 상수 시간 |
라이브러리 타입
다음 표준 라이브러리 타입들은 ReversibleContainer 요구 사항을 충족합니다:
|
(C++11)
|
고정 크기 인플레이스 연속 배열
(클래스 템플릿) |
|
양방향 큐
(클래스 템플릿) |
|
|
이중 연결 리스트
(클래스 템플릿) |
|
|
크기 조정 가능한 연속 배열
(클래스 템플릿) |
|
|
(C++26)
|
크기 조정 가능, 고정 용량, 인플레이스 연속 배열
(클래스 템플릿) |
|
키-값 쌍의 컬렉션, 키로 정렬됨, 키는 고유함
(클래스 템플릿) |
|
|
키-값 쌍의 컬렉션, 키로 정렬됨
(클래스 템플릿) |
|
|
고유 키의 컬렉션, 키로 정렬됨
(클래스 템플릿) |
|
|
키의 컬렉션, 키로 정렬됨
(클래스 템플릿) |
예제
다음 예제는 역방향으로 vector (레거시 임의 접근 반복자를 가짐)를 순회합니다.
#include <iostream> #include <vector> int main() { std::vector<int> v = {3, 1, 4, 1, 5, 9}; for (std::vector<int>::const_reverse_iterator i{v.crbegin()}; i != v.crend(); ++i) std::cout << *i << ' '; std::cout << '\n'; }
출력:
9 5 1 4 1 3
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2105 | C++98 |
typename
X
::
const_reverse_iterator
는 값 타입
const
T
의
반복자 타입이어야 했음 |
값 타입
T
의 상수
반복자 타입이어야 함 |