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)
    1. operator<(C++20부터 std::less{})로 값을 비교해요. T가 LessThanComparable이 아니면 동작이 미정의예요.
    1. 비교 함수 comp로 값을 비교해요.
template< class T, class Compare >
constexpr const T& clamp( const T& v, const T& lo, const T& hi,
                          Compare comp );   // (2)

만약 lohi보다 크면 동작이 미정의예요. 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 지원이라 컴파일 타임에도 활용할 수 있는 유틸리티예요.

더 알아보기 (Learn more)

cppreference