반응형
STL을 활용하여 상한값 하한값 단순화하는 방법
보통의 경우 상한값 또는 하한값을 체크하는 경우 아래와 같이 구현한다.
1
2
3
4
5
6
7
|
if (result > 100) { //상한값 100 체크
result = 100;
}
if (result < 0) { //하한값 0 체크
result = 0;
}
|
cs |
C++ STL에서 제공하는 std::min과 std::max를 활용하여 코드를 더 단수화하며 동시에 가독성을 높일 수 있다.
*min과 max의 헤더는 <algorithm>
1
2
3
4
|
result = std::min(result, 100); //상한값 100 체크
result = std::max(result, 0); //하한값 0 체크
|
cs |
조금더 응용하여 상한과 하한을 동시에 체크하는 방법도 있다.
1
|
result = std::min(std::max(result, 0), 100); //상한값과 하한값 동시에 체크
|
cs |
템플릿을 활용하여 함수화 하면 다음과 같이 사용 가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <iostream>
#include <algorithm>
using namespace std;
template <typename T>
T checkMinMax(T x, T min, T max) {
return std::min(std::max(x, min), max);
}
int main(int argc, const char * argv[]) {
int input;
cin>>input;
input = checkMinMax<int>(input, 0, 100);
cout<<input<<endl;
return 0;
}
|
cs |
-1 입력 시 결과 0
101 입력 시 결과 100
반응형
'C and C++' 카테고리의 다른 글
[C++][STL] vector for문 올바로 사용하기 (0) | 2021.02.06 |
---|---|
[C] C에서 생성자 소멸자 흉내기 (0) | 2020.10.11 |
[C++] Template include 오류 해결 방법 (0) | 2020.04.26 |
[C++] 순환참조(Circular Dependency) 제거하는 방법 (1) | 2020.04.12 |
[C++][STL] size()함수 주의사항 (0) | 2020.01.29 |