c++ - 我可以将 vector 作为initial_sum和其他函数传递给std::accumulate吗?

标签 c++

我有下面的代码。我们的练习是使用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/

相关文章:

c++ - 在循环中删除 vector 的一个元素

c++ - 在这种多态场景下使用 static_cast 安全吗?

c++ - 与 GCC 共享不一致的字符串文字

c++ - 在变量中提取 C++ 图像的日期 exif

c++ - C++ 析构函数的奇怪行为

c++:指针值与指向变量的地址不同

c++ - 在类中声明 tf2_ros::Buffer 时构建错误

c++ - Boost 库中的 Io_context 错误

c++ - 确定字符串是否仅包含字母数字字符(或空格)

c++ - std::enable_if_t 将字符串与非字符串函数参数分开