put_in_range
これは範囲と値を取り、与えられた値が範囲内であればそれを返す単純な関数です。範囲外の場合は、最も近い範囲の終わりの値が返されます。
#include <dlib / algs.h>
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | template < typename T> T put_in_range ( const T& a, const T& b, const T& val ) /*! requires - T is a type that looks like double, float, int, or so forth ensures - if (val is within the range [a,b]) then - returns val - else - returns the end of the range [a,b] that is closest to val !*/ { if (a < b) { if (val < a) return a; else if (val > b) return b; } else { if (val < b) return b; else if (val > a) return a; } return val; } // overload for double inline double put_in_range( const double & a, const double & b, const double & val) { return put_in_range< double >(a,b,val); } |