作为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循环而不会被控制语句溢出?
答案 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));
我会留给你来决定这种“更多的冥想”,因为这样的事情在旁观者的眼中。