티스토리 뷰
C++에서 많은 사람들이 최솟값, 최댓값을 찾을 때 min, max를 쓸때 다음과 같이 쓰는 모습을 너무나도 많이 봤다.
1 2 | int min_value = min(min(a, b), c); int max_value = max(max(a, b), c); | cs |
위에 코드같이 세 개의 값에 대해서만 min, max를 구한다면 그래도 불편을 감수하고 사용할 수 있다. 그런데, 만약 4개, 5개 등등... 굉장히 많은 수들의 최댓값, 최솟값을 비교해야 한다면?
값들이 배열이나 container안에 있으면 함수(max_element / min_element)를 통해 구할 수 있지만, 만약 각각의 값들이 다른 공간안에 담겨있다면 조금 곤란할 수 있다.
C++ 11부터는 다음과 같이 min과 max를 구할 수 있다. 네 개의 값 a, b, c, d의 값 중 최솟값과 최댓값을 찾는다고 하면 코드를 이렇게 작성할 수 있다.
1 2 | int min_value = min({a, b, c, d}); // min value of a, b, c, d int max_value = max({a, b, c, d}); // max value of a, b, c, d | cs |
왜 이런 일이 가능할까?
C++ 11 에서는 min함수 템플릿에 세 번째 항목이 추가되었다.
(3) initializer list - T min(initializer_list<T> il, Compare comp);
첫 번째 인자로 initilizer_list가 왔는데, 이는 initializer_list 객체의 생성자로 인하여 자동으로 임시 list를 짓는 역할을 한다고 생각하면 된다.
위의 예시를 기준으로, a, b, c, d 네 개의 변수를 하나의 list il = {a, b, c, d} 를 임시로 생성하여 안의 값들을 비교하는 것이다.
비교 기준은 두 번째 인자인 Compare comp에 넣어주면 된다.
max함수도 min 함수와 같은 방법으로 동작하기에 설명을 생략하겠다.
도움이 되었다면 지나가는 길에 하트 하나 눌러주세요, 양질의 글을 쓰는데 하나의 동기부여가 됩니다😍
지적이나 오타 수정 댓글 환영합니다!!
'PS 이야기 > Tips & Tricks' 카테고리의 다른 글
[C++] INF의 값은 어떤 것으로 해주는 것이 좋을까? (0) | 2022.04.20 |
---|---|
[C++] 회문(팰린드롬) 판별에 관한 모든 것 (0) | 2022.04.20 |
[C++] <bits/stdc++.h> 헤더 쓸 때 시간 두 배 이상 줄이는 꿀팁!!!! (0) | 2022.04.05 |
[C++] C++의 무적 헤더 <bits/stdc++.h> 는 무엇인가? (0) | 2022.04.05 |
[C++] 초기화 함수 fill 과 memset은 무엇이 다를까? (1) | 2022.04.04 |
- Total
- Today
- Yesterday
- 함수
- react
- 제어문
- Python
- 알고리즘
- C
- 시간복잡도
- 백준
- MIN
- Max
- BRONZE
- equal
- 수학
- GDSC
- 구현
- 문자열
- C++
- docker
- effective async
- bomblab
- Proactor
- BOJ
- Network
- 프로그래밍
- CSAPP
- for
- 헤더
- JS
- 사칙연산
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |