Namespaces
Variants

C++ named requirements: ReversibleContainer

From cppreference.net
C++ named requirements

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)
고정 크기 인플레이스 연속 배열
(클래스 템플릿)
양방향 큐
(클래스 템플릿)
이중 연결 리스트
(클래스 템플릿)
크기 조정 가능한 연속 배열
(클래스 템플릿)
크기 조정 가능, 고정 용량, 인플레이스 연속 배열
(클래스 템플릿)
키-값 쌍의 컬렉션, 키로 정렬됨, 키는 고유함
(클래스 템플릿)
키-값 쌍의 컬렉션, 키로 정렬됨
(클래스 템플릿)
고유 키의 컬렉션, 키로 정렬됨
(클래스 템플릿)
키의 컬렉션, 키로 정렬됨
(클래스 템플릿)

예제

다음 예제는 역방향으로 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 의 상수
반복자 타입이어야 함