minmax_element
minmax_element (범위에서 최소·최대 원소 위치)
범위에서 최소값과 최대값의 위치를 std::pair<반복자, 반복자>로 한 번에 찾는 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
minmax_element는 범위 [first, last)에서 최소 원소와 최대 원소를 가리키는 반복자 쌍을 반환해요.
template< class ForwardIt >
std::pair<ForwardIt, ForwardIt>
minmax_element( ForwardIt first, ForwardIt last ); // (1)
비교기 버전도 있어요.
template< class ForwardIt, class Compare >
std::pair<ForwardIt, ForwardIt>
minmax_element( ForwardIt first, ForwardIt last, Compare comp ); // (2)
- 반환 값:
{min_iter, max_iter}쌍. 범위가 비어 있으면{last, last}. - 복잡도: 최대
3·⌊(N−1)/2⌋번의 비교(N = last-first).
min_element와 max_element를 각각 부르는 것보다 비교 횟수를 줄일 수 있어요.
std::vector<int> v{3, 1, 4, 1, 5};
auto [lo, hi] = std::minmax_element(v.begin(), v.end());
int mn = *lo, mx = *hi; // mn=1, mx=5
최소와 최대 위치가 모두 필요할 때 효율적으로 얻는 함수예요.