toge's diary

コンピュータ関連の趣味をつらつらと。

最小値と最大値を求める

たぶん探せばboostあたりにありそうだが、面倒なので作ってみた。

template<typename T>
class MinMax
{
public:
  MinMax()
    : min(std::numeric_limits<T>::max()),
      max(std::numeric_limits<T>::min())
  {}

  MinMax& operator()(T data){
    if (data < min)
      min = data;
    else if (data > max)
      max = data;
    return *this;
  }

  T min, max;
};

void test() {
  MinMax<int> minmax;
  minmax(10)(20)(30)(40)(50);
  std:cout << "min:" << minmax.min << " max:" << minmax.max << std::endl;
}