我有下面的代码。我们的练习是使用STL算法。
有没有一种方法可以将std::accumulate用于此代码?
如果您对此代码使用其他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::accumulate
在这里不是合适的算法,因为它只给您一个值。
您需要阅读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; });
关于c++ - 我可以将 vector 作为initial_sum和其他函数传递给std::accumulate吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62487323/