Namespaces
Variants

std::rbegin, std::crbegin

cppreference.net에서
 
 
반복자 라이브러리
반복자 개념
반복자 기본 요소
알고리즘 개념 및 유틸리티
간접 호출 가능 개념
일반 알고리즘 요구 사항
(C++20)
(C++20)
(C++20)
유틸리티
(C++20)
반복자 어댑터
범위 접근
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
헤더 <array>
에 정의됨<deque>
헤더 <flat_map>
 에 정의됨 (C++23부터)
헤더 <flat_set>
 에 정의됨 (C++23부터)
에 정의됨<inplace_vector>
 헤더
에 정의됨 (C++26부터)<iterator>
헤더 <list>
에 정의됨<map>
헤더 <optional>
 에 정의됨 (C++26부터)
헤더 <regex>
에 정의됨<set>
헤더 <span>
 에 정의됨 (C++20부터)
헤더 <stacktrace>
 에 정의됨 (C++23부터)
헤더 <string>
에 정의됨<string_view>
 헤더
에 정의됨 (C++17부터)<unordered_map>
에 정의됨<valarray>
헤더 <vector>
template< class C >
auto rbegin( C& c ) noexcept(noexcept(c.rbegin()))
    -> decltype(c.rbegin());
에 정의됨 (1) (C++14부터)
(C++17부터 constexpr)
template< class C >
auto rbegin( const C& c ) noexcept(noexcept(c.rbegin()))
    -> decltype(c.rbegin());
(2) (C++14부터)
(C++17부터 constexpr)
template< class T, std::size_t N >
std::reverse_iterator<T*> rbegin( T (&array)[N] ) noexcept;
(3) (C++14부터)
(C++17부터 constexpr)
template< class T >
std::reverse_iterator<const T*> rbegin( std::initializer_list<T> il ) noexcept;
(4) (C++14부터)
(C++17부터 constexpr)
template< class C >
auto crbegin( const C& c ) noexcept(noexcept(std::rbegin(c)))
    -> decltype(std::rbegin(c));
(5) (C++14부터)
(C++17부터 constexpr)

주어진 범위의 역방향 시작을 가리키는 반복자를 반환합니다.

1,2) c.rbegin()을(를) 반환합니다. 이는 일반적으로 c으로 표현되는 시퀀스의 역방향 시작을 가리키는 반복자입니다.
1) C이(가) 표준 Container인 경우 C::reverse_iterator 객체를 반환합니다.
2) C이(가) 표준 Container인 경우 C::const_reverse_iterator 객체를 반환합니다.
3) std::reverse_iterator<T*>의 역방향 시작을 가리키는 array 객체를 반환합니다.
4) std::reverse_iterator<const T*>의 역방향 시작을 가리키는 il 객체를 반환합니다.
5) std::rbegin(c)을(를) 반환하며, c은(는) 항상 const로 한정된 것으로 처리됩니다.
C이(가) 표준 Container인 경우 C::const_reverse_iterator 객체를 반환합니다.

매개변수

c - rbegin 멤버 함수를 가진 컨테이너 또는 뷰
array - 임의 타입의 배열
il - std:: initializer_list

반환값

1,2) c. rbegin ( )
3) std:: reverse_iterator < T * > ( array + N )
4) std:: reverse_iterator < const T * > ( il. end ( ) )
5) c. rbegin ( )

예외

구현 정의 예외를 던질 수 있습니다.

오버로드

적합한 rbegin() 멤버 함수를 노출하지 않지만 반복 가능한 클래스 및 열거형에 대해 rbegin 의 사용자 정의 오버로드를 제공할 수 있습니다.

인수 종속 탐색 으로 찾은 rbegin 의 오버로드는 std :: ranges:: rbegin 과 std::ranges::crbegin 의 동작을 사용자 정의하는 데 사용할 수 있습니다.

(C++20 이후)

참고 사항

std::initializer_list 에 대한 오버로드는 rbegin 멤버 함수를 가지고 있지 않기 때문에 필요합니다.

예제

#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    std::vector<int> v = {3, 1, 4};
    auto vi = std::rbegin(v); // "vi"의 타입은 std::vector<int>::reverse_iterator
    std::cout << "*vi = " << *vi << '\n';
    *std::rbegin(v) = 42; // OK: 할당 후 v[2] == 42
//  *std::crbegin(v) = 13; // 오류: 해당 위치는 읽기 전용입니다
    int a[] = {-5, 10, 15};
    auto ai = std::rbegin(a); // "ai"의 타입은 std::reverse_iterator<int*>
    std::cout << "*ai = " << *ai << '\n';
    auto il = {3, 1, 4};
    // 아래 "it"의 타입은 std::reverse_iterator<int const*>입니다:
    for (auto it = std::rbegin(il); it != std::rend(il); ++it)
        std::cout << *it << ' ';
    std::cout << '\n';
}

출력:

*vi = 4
*ai = 15
4 1 3

결함 보고서

다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 발표된 동작 올바른 동작
LWG 3537 C++14 std::rbegin와 std::crbegin는 예외 사양을 전파할 필요가 없었습니다 필요함

참고 항목

(C++11) (C++14)
컨테이너나 배열의 시작 부분을 가리키는 반복자를 반환합니다
(함수 템플릿)
(C++11) (C++14)
컨테이너나 배열의 끝 부분을 가리키는 반복자를 반환합니다
(함수 템플릿)
(C++14)
컨테이너나 배열의 역방향 끝 반복자를 반환합니다
(함수 템플릿)
범위에 대한 역방향 반복자를 반환합니다
(커스터마이제이션 포인트 객체)
읽기 전용 범위에 대한 역방향 반복자를 반환합니다
(커스터마이제이션 포인트 객체)