我有下面的代码,我们的节选是使用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);
}
}
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; });