clamp
clamp (값을 범위 안으로 제한)
값을 하한과 상한 사이로 제한(clamp)해서, 경계 안에 가장 가까운 값을 반환하는 알고리즘이에요. <algorithm> 헤더, C++17부터.
출처: cppreference
본문
clamp는 [lo, hi] 구간에서 v에 가장 가까운 값에 대한 참조를 반환해요.
template< class T >
constexpr const T& clamp( const T& v, const T& lo, const T& hi ); // (1)
-
operator<(C++20부터std::less{})로 값을 비교해요.T가 LessThanComparable이 아니면 동작이 미정의예요.
-
- 비교 함수
comp로 값을 비교해요.
- 비교 함수
template< class T, class Compare >
constexpr const T& clamp( const T& v, const T& lo, const T& hi,
Compare comp ); // (2)
만약 lo가 hi보다 크면 동작이 미정의예요. T가 부동소수점 타입이어도 NaN을 피하면 쓸 수 있어요.
동작을 정리하면:
v < lo이면lo를,hi < v이면hi를, 그 사이면v를 반환해요.- 매개변수:
v(제한할 값),lo,hi(경계).
흔한 용도는 게임/시뮬레이션에서 값을 일정 범위로 유지하거나, UI 진행률을 0~100 사이로 맞추는 거예요.
int volume = std::clamp(input, 0, 100); // 0~100 사이로 제한
간단하고 constexpr 지원이라 컴파일 타임에도 활용할 수 있는 유틸리티예요.