C++ 프로그래밍에서 배열 안에서 가장 큰 값을 찾아야 하는 경우가 자주 있습니다. 이 글에서는 STL(표준 템플릿 라이브러리)의 max_element() 함수를 사용하여 배열의 최댓값을 손쉽게 구하는 방법을 알아보겠습니다.
예를 들어 배열이 [12, 45, 74, 32, 66, 96, 21, 32, 27]과 같다면, 이 배열의 최댓값은 96입니다. 반복문으로 일일이 비교하는 대신, <algorithm> 헤더 파일에 포함된 max_element() 함수 하나면 간단하게 해결할 수 있습니다.
max_element() 함수란?
max_element(first, last)는 탐색 범위의 시작 주소와 끝 주소를 인자로 받아, 해당 범위에서 가장 큰 요소를 가리키는 반복자(iterator)를 반환합니다. 따라서 실제 값에 접근하려면 역참조 연산자(*)를 사용해야 합니다. 이 함수의 시간 복잡도는 O(n)으로, 배열의 모든 요소를 한 번씩 확인하는 방식으로 동작합니다.
예제 코드
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int arr[] = {12, 45, 74, 32, 66, 96, 21, 32, 27};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "배열 요소: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << "\n최댓값: " << *max_element(arr, arr + n);
return 0;
}실행 결과
배열 요소: 12 45 74 32 66 96 21 32 27 최댓값: 96
코드 설명
sizeof(arr) / sizeof(arr[0])를 사용하면 배열 전체 크기를 요소 하나의 크기로 나누어 배열의 길이를 계산할 수 있습니다. 그런 다음 max_element(arr, arr + n)을 호출하면 최댓값이 저장된 위치를 가리키는 반복자가 반환되고, 여기에 *를 붙여 실제 최댓값인 96을 출력하게 됩니다.
참고로 최솟값을 구할 때는 같은 헤더의 min_element() 함수를 동일한 방식으로 사용하면 됩니다. 이처럼 STL 알고리즘 함수를 활용하면 직접 로직을 작성하지 않고도 간결하고 오류 없는 코드를 작성할 수 있습니다.