Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL array::crbegin()과 array::crend() 함수 완벽 정리

개요

이 글에서는 C++ STL(표준 템플릿 라이브러리)의 std::array 컨테이너가 제공하는 crbegin()crend() 함수에 대해 알아봅니다. 두 함수는 배열을 역방향으로 안전하게 순회할 수 있도록 도와주며, 요소를 수정할 수 없는 상수(const) 반복자를 반환한다는 점이 특징입니다.

array::crbegin()이란?

array::crbegin()은 컨테이너의 마지막 요소를 가리키는 상수 역방향 반복자(constant reverse iterator)를 반환하는 함수입니다. 함수 이름의 'c'는 constant(상수), 'r'은 reverse(역방향)를 의미하며, 이 반복자를 통해 역순 순회를 시작할 수 있습니다. 이 함수는 어떠한 매개변수도 받지 않습니다.

array::crend()란?

array::crend()crbegin()의 반대에 해당하는 함수로, 역순 시퀀스의 끝 다음 위치, 즉 원래 배열의 첫 번째 요소 바로 앞에 있는 이론적인 위치를 가리키는 상수 역방향 반복자를 반환합니다. 주로 역방향 반복이 종료 조건에 도달했는지 확인하는 용도로 사용됩니다.

예제 코드

다음 예제를 통해 두 함수의 동작 방식을 더 명확히 이해해 보겠습니다.

#include<iostream>
#include<array>
using namespace std;

int main() {
   array<int, 10> arr = {0, 11, 22, 33, 44, 55, 66, 77, 88, 99};
   cout << "역순으로 출력한 목록: ";
   for(auto it = arr.crbegin(); it != arr.crend(); it++){
      cout << *it << " ";
   }
   return 0;
}

실행 결과

역순으로 출력한 목록: 99 88 77 66 55 44 33 22 11 0

정리

위 예제에서 볼 수 있듯이, crbegin()부터 crend()까지 반복문을 실행하면 배열의 요소가 뒤에서부터 앞으로 차례대로 출력됩니다. 또한 두 함수가 반환하는 반복자는 상수 타입이므로 순회 도중에 요소 값을 변경할 수 없습니다. 따라서 데이터를 읽기만 하는 역방향 순회가 필요할 때 이 함수들을 활용하면 코드의 안전성과 의도를 명확하게 표현할 수 있습니다.