提问者:小点点

我可以将一个矢量作为initial_sum和一个不同的函数传递给std::accumulate吗


我有下面的代码,我们的节选是使用STL算法。 我想知道是否有一种方法可以为这段代码使用std::accumulation。 如果您有一个不同的STL算法为这段代码,它也是好的! (我们也会测试我们的时间复杂度)

  void multiplyAndAddVector(const int num, std::vector<double>& tomultiply, std::vector<double>& toadd)
{
    for(int i = 0; i < tomultiply.size(); i++)
    {
        toadd[i] += (tomultiply[i] * num);
    }
}
              

                     
                    
      
      
                      

共1个答案

匿名用户

std::accumulation在这里不是合适的算法,因为它只给出一个值作为结果。

您需要读取2个范围,并修改其中一个范围,您可以使用std::transform:

std::transform(toMultiply.begin(), toMultuply.end(), // input range 1
               toAdd.begin(),                        // input range 2
               toAdd.begin(),                        // output range 
               [num](double mul, double add) { return add + mul * num; });