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;
}
< 결과 >
'C++0x' 카테고리의 다른 글
[STL] 15. VC++ 10에 추가된 새로운 컨테이너 forward_list – 사용편 (0) | 2011.06.21 |
---|---|
[STL] 14. VC++ 10에 추가된 새로운 컨테이너 forward_list – 소개편 (1) | 2011.06.14 |
[STL] 12. <algorithm>에 추가된 새로운 함수들 iota (0) | 2011.05.19 |
[STL] 11. <algorithm>에 추가된 새로운 함수들 is_heap, is_heap_until (0) | 2011.05.11 |
[STL] 10. <algorithm>에 추가된 새로운 함수들 is_sorted, is_sorted_until (1) | 2011.04.25 |