이 튜토리얼에서는 C++의 STL(표준 템플릿 라이브러리)을 활용하여 벡터(vector)에서 최대 요소를 찾는 방법을 알아보겠습니다.
max_element() 함수란?
STL 라이브러리에서 제공하는 max_element() 함수를 사용하면 주어진 벡터에서 최댓값을 손쉽게 찾을 수 있습니다. 이 함수는 지정된 범위 내에서 최대값을 가지는 요소의 반복자(iterator)를 반환합니다. 따라서 실제 값을 얻으려면 반복자 앞에 역참조 연산자 *(asterisk)를 붙여야 합니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
// 벡터 정의
vector<int> a = { 1, 45, 54, 71, 76, 12 };
cout << "Vector: ";
for (int i = 0; i < a.size(); i++)
cout << a[i] << " ";
cout << endl;
// 최대 요소 찾기
cout << "Max Element = " << *max_element(a.begin(), a.end());
return 0;
}실행 결과
Vector: 1 45 54 71 76 12 Max Element = 76
코드 설명
위 코드의 핵심 부분은 *max_element(a.begin(), a.end())입니다. 이 부분이 어떻게 동작하는지 단계별로 살펴보겠습니다.
- a.begin(): 벡터의 첫 번째 요소를 가리키는 반복자를 반환합니다.
- a.end(): 벡터의 마지막 요소 다음 위치를 가리키는 반복자를 반환합니다.
- max_element(): begin부터 end까지의 범위를 순회하며 최댓값을 가진 요소의 반복자를 반환합니다.
- *: 반환된 반복자를 역참조하여 실제 최댓값(76)을 출력합니다.
참고 사항
max_element() 함수를 사용하려면 <algorithm> 헤더가 필요하지만, 위 예제에서는 대부분의 표준 라이브러리를 한 번에 포함하는 <bits/stdc++.h>를 사용했습니다. 실무 환경에서는 #include <algorithm>과 #include <vector>를 개별적으로 포함하는 것이 더 권장됩니다.
또한 범위 기반 for문(range-based for loop)을 사용하면 벡터 출력 코드를 더 간결하게 작성할 수 있습니다.
for (int x : a)
cout << x << " ";이처럼 STL의 max_element() 함수를 활용하면 직접 반복문으로 최댓값을 구하는 것보다 코드가 간결해지고 가독성도 크게 향상됩니다. 최솟값을 찾고 싶다면 같은 방식으로 min_element() 함수를 사용하면 됩니다.