std::rbegin, std::crbegin
| 헤더 <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) |
주어진 범위의 역방향 시작을 가리키는 반복자를 반환합니다.
c.rbegin()을(를) 반환합니다. 이는 일반적으로 c으로 표현되는 시퀀스의 역방향 시작을 가리키는 반복자입니다.std::reverse_iterator<T*>의 역방향 시작을 가리키는 array 객체를 반환합니다.std::reverse_iterator<const T*>의 역방향 시작을 가리키는 il 객체를 반환합니다.std::rbegin(c)을(를) 반환하며, c은(는) 항상 const로 한정된 것으로 처리됩니다.
매개변수
| c | - |
rbegin
멤버 함수를 가진 컨테이너 또는 뷰
|
| array | - | 임의 타입의 배열 |
| il | - | std:: initializer_list |
반환값
예외
구현 정의 예외를 던질 수 있습니다.
오버로드
적합한
rbegin()
멤버 함수를 노출하지 않지만 반복 가능한 클래스 및 열거형에 대해
rbegin
의 사용자 정의 오버로드를 제공할 수 있습니다.
|
인수 종속 탐색
으로 찾은
|
(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)
|
컨테이너나 배열의 역방향 끝 반복자를 반환합니다
(함수 템플릿) |
|
(C++20)
|
범위에 대한 역방향 반복자를 반환합니다
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
읽기 전용 범위에 대한 역방향 반복자를 반환합니다
(커스터마이제이션 포인트 객체) |