template<class ForwardIt>
ForwardIt max_element(ForwardIt first, ForwardIt last); // constexpr since C++17
template<class ForwardIt, class Compare>
ForwardIt max_element(ForwardIt first, ForwardIt last, Compare comp); // constexpr since C++17
C++17 ~
template<class ExecutionPolicy, class ForwardIt>
ForwardIt max_element(ExecutionPolicy&& policy, ForwardIt first, ForwardIt last);
template<class ExecutionPolicy, class ForwardIt, class Compare>
ForwardIt max_element(ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, Compare comp);
: 주어진 범위 내에서 가장 큰 요소를 찾아 반복자를 반환합니다.
template<class ForwardIt>
ForwardIt min_element(ForwardIt first, ForwardIt last); // constexpr since C++17
template<class ForwardIt, class Compare>
ForwardIt min_element(ForwardIt first, ForwardIt last, Compare comp); // constexpr since C++17
C++17 ~
template<class ExecutionPolicy, class ForwardIt>
ForwardIt min_element(ExecutionPolicy&& policy, ForwardIt first, ForwardIt last);
template<class ExecutionPolicy, class ForwardIt, class Compare>
ForwardIt min_element(ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, Compare comp);
: 주어진 범위 내에서 가장 작은 요소를 찾아 반복자를 반환합니다.
max_element와 min_element는 기본적으로 동일한 로직을 따릅니다.
두 함수의 차이는 comp(비교 함수)가 다르다는 점입니다.
실행 정책은 std::execution 헤더에 포함되어있습니다.
- execution::seq : 순차 실행 (기본 값)
- execution::par : 병렬 실행 (멀티코어 시스템에서 작업이 병렬로 수행됩니다.)
- execution::par_unseq : 병렬 및 비순차 실행
<example>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 3, 5, 7, 2};
cout << *max_element(vec.begin(), vec.end()) << endl;
cout << *max_element(vec.begin(), vec.end(), [](const int & a,const int & b) {return a > b; });
return 0;
}
결과값
