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

C++ STL로 배열의 최댓값 구하기: max_element() 함수 완벽 가이드

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 알고리즘 함수를 활용하면 직접 로직을 작성하지 않고도 간결하고 오류 없는 코드를 작성할 수 있습니다.