min, max는 정말 이름 그대로의 함수이며 c++에서 std를 선언하면 min, max를 변수명으로 사용 할 수 없는 이유이다.
<algorithm>에 정의되어 있으며 std안에 정의 되어 있으므로 std를 선언해야 한다.
min()은 두 개의 값중 더 작은 값을 반환하고 max()는 큰 값을 반환한다.
즉 min(a, b) == a > b ? b : a 이고 max(a, b) == a > b ? a : b 이다. (실제로 이렇게 구현되어 있다.)
그리고 최신버전 c++(17인가 부터)에서는 2개 값이 아닌 더 많은 값도 처리 할 수 있게 되었는데,
함수인자에 min({ a,b,c,d }) 처럼 초기화 하는 형식으로 중괄호를 넣어주면된다.
또한 compare함수를 작성하여 추가 할 수 있는데,
크고 작음을 어떤 방식으로 정할 것인지를 직접 작성하여 마지막 인자로 추가하면 된다.
예시
minmax함수는 이 글을 작성하면서 레퍼런스 사이트를 보다가 처음 알게된 함수인데 재밌어 보여서 준비 했다.
(용도는 ... 잘 모르겠다ㅎ)
minmax()는 min(), max()와 사용 법이 똑같은데 단지 리턴값이 pair로 first는 min, second는 max값이 리턴된다.
_element()는 배열내부에서 min, max, minmax를 결정하는 함수이다.
min_elemnet(first, last)로 사용하고 first는 첫 번째 원소의 주소 값, last는 마지막 원소의 다음 주소 값이다.
즉, [first, last)범위에서 min값이 결정되고 그 min값이 있는 주소 값을 반환한다.
예시
'프로그래밍 > 알고리즘 스터디' 카테고리의 다른 글
삼분탐색..!!(Ternary search) (0) | 2020.08.19 |
---|---|
STL container 편 4. pair, tuple (0) | 2020.05.22 |
STL algorithm 편 1. sort, stable sort (0) | 2020.03.10 |
STL Container 편 3. stack, queue, deque, priority_queue (0) | 2019.08.29 |
STL Container 편 2.list와 iterator (0) | 2019.08.26 |