std::max_element, std::min_element는 C++ 표준라이브러리(STL)의 algorithm 헤더 에 정의된 함수이다.
특정 구간( [first, last) ) 내에서 array, list, vector 등 최대, 최소값을 구하는 함수이다.
이 함수의 반환값은 iterator(반복자)이므로, 실제 값에 접근하려면 포인터처럼 * 연산자를 사용해야한다.
max_element(), min_element 둘 다 모든 요소에 최소 한번씩은 접근해야 하기 때문에
범위 길이에 비례하는 선형 시간 복잡도 O(N)을 가진다.
#include <bits/stdc++.h>
using namespace std;
int a[9];
int main(void){
ios::sync_with_stdio(0);
cin.tie(0);
for(int i = 0; i < 9; i++) cin >> a[i];
cout << *max_element(a, a+9) << '\n'; // 최댓값 출력
cout << max_element(a, a+9) - a + 1; // 최댓값의 인덱스 출력
}
a라는 배열에 9개의 값을 넣고, 이 중 최댓값과 최댓값의 인덱스를 출력하는 코드이다.
*max_element(a, a+9)는 *연산자를 통해 최댓값을 직접 참조해서 출력하고,
max_element(a, a+9)의 반환값은 (배열 a의 주소 + 최댓값의 인덱스)이므로 배열 a의 주소를 뺌으로써 최댓값의 인덱스를 얻을 수 있다.