计算两个算术进度的更好方法是什么?

时间:2015-08-10 20:59:26

标签: c++ c++11

作为C ++ 2d直方图类的一部分,我必须计算x和y值的bin的向量。这是我正在做的事情;

    double xInc = (xMax - xMin)/xBins;
    double yInc = (yMax - yMin)/yBins;
    for(int i = 0; i<(xBins+1); i++){ m_xVals[i] = xMin + i*xInc; }
    for(int i = 0; i<(yBins+1); i++){ m_yVals[i] = yMin + i*yInc; }

我是否遗漏了algorithms中可以更简洁地执行此操作的内容?或者,是否有办法将其转换为1循环而不会被控制语句溢出?

1 个答案:

答案 0 :(得分:1)

好吧,如果您认为必须,可以按std::iota投入使用(live example):

class FloatingIota {
public:
  FloatingIota(double start, double inc)
    : start_(start), inc_(inc), n_(0) {}
  FloatingIota& operator++() { ++n_; return *this; }
  operator double() const { return start_ + n_ * inc_; }
private:
  double start_;
  double inc_;
  int n_;
};

std::iota(m_xVals, m_xVals + (xBins+1), FloatingIota(xMin, xInc));
std::iota(y_xVals, m_yVals + (yBins+1), FloatingIota(yMin, yInc));

我会留给你来决定这种“更多的冥想”,因为这样的事情在旁观者的眼中。