'C++' std::max_element, std::min_element

토스트·2024년 12월 25일

'C++' std::algorithm

목록 보기
5/11

max_element

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);

: 주어진 범위 내에서 가장 큰 요소를 찾아 반복자를 반환합니다.

min_element

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);

: 주어진 범위 내에서 가장 작은 요소를 찾아 반복자를 반환합니다.

  • first : 탐색을 시작할 첫 번째 요소를 가리키는 순방향 반복자
  • last : 탐색을 종료할 마지막 번째 요소의 다음 위치를 가리키는 순방향 반복자
  • comp : 비교 함수 또는 함수 객체
  • policy : 실행 정책

max_elementmin_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;
}

결과값

0개의 댓글