ある数値を変化させるとき上限と下限を付けたい場合があります
例えば、画面外に飛び出ないようにするとか、HPみたいな範囲がある数値とかです
HPはMaxHPを超えることはないですし、0未満になることもないです
下限以下なら下限に、上限以上なら上限にしたいんですが、if文を書くのは煩わしいです
std::minとstd::maxを組み合わせた方法もあるんですが、いまいち直感的じゃないです
自分で作ってもいいんですが、boostにすでにあるのでこれ使いましょう
boost::algorithm::clampです
使い方はこんな感じ
clamp.cpp
#include <boost/algorithm/clamp.hpp>
void hpchange(int addhp){
hp = boost::algorithm::clamp(hp + addhp, 0, maxHp);
}
ちなみに、std::minmaxってのがあってあるじゃん!と思っていたら、
これはコンテナみたいな複数の要素の中から最小と最大を同時に見つける関数です
用途が違うので注意しましょう