글
C++03까지의 STL에는 데이터셋에서 가장 작은 요소를 찾을 때는 min_element, 가장 큰 요소를 찾을 때는max_element를 사용하였습니다.
그런데 만약 최소와 최대를 동시에 찾을 때는 어쩔 수 없이 min_element와 max_element를 각각 호출해야 하는 불필요한 불편한 점이 있었습니다.
C++0x에서는 이런 불편함을 개선하기 위해 한번에 최소와 최고를 찾아주는 minmax_element 알고리즘이 새로 생겼습니다.
minmax_element
template<class ForwardIterator>
pair< ForwardIterator, ForwardIterator >
minmax_element( ForwardIterator _First, ForwardIterator _Last );
template<class ForwardIterator, class BinaryPredicate>
pair< ForwardIterator, ForwardIterator >
minmax_element( ForwardIterator _First, ForwardIterator _Last, BinaryPredicate _Comp );
minmax_element 알고리즘에는 조건자를 사용하는 버전과 조건자를 사용하지 않은 버전 두 가지가 있습니다. 데이터셋의 자료형이 유저 정의형(class나 struct를 사용한)이라면 조건자가 있는 버전을 사용합니다.
< 예제 코드 >
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int Numbers[10] = { 50, 25, 20, 7, 15, 7, 10, 2, 1, 3 };
pair<int*, int*> MinMaxValue = minmax_element( &Numbers[0], &Numbers[10] );
cout << "최소 값 : " << *MinMaxValue.first << endl;
cout << "최대 값 : " << *MinMaxValue.second << endl;
return 0;
}
< 결과 >
댓글