c++ - 使用 C++ 和 STL 的 vector 元素乘积

标签 c++ stl

用C++实现逐元素乘积并不难:

vector<float> a_array;
vector<float> b_array;
vector<float> c_array;
vector<float> dot_array;
....
for(int i=0; i<a_array.size(); i++)
{
   float temp;
   temp = a_array[i]*b_array[i]*c_array[i];
   dot_array[i] = temp;
}

这是一个非常简单的实现,我想知道 STL 中是否已经有更高效的算法。谢谢!

最佳答案

std::transform 可用于将两个 vector 相乘:

#include <algorithm>
#include <functional>

// Precondition: b.size() >= a.size() && r.size() >= a.size()
std::transform(a.begin(), a.end(), b.begin(), r.begin(), std::multiplies<float>());

输入序列多于两个时,没有类似的标准算法。

关于c++ - 使用 C++ 和 STL 的 vector 元素乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737985/

相关文章:

c++ - 循环输出多个变量到一个ASCII文件

c++ - 实现文件本地的私有(private)成员函数和结构以及助手

c++ - 为什么将排序的键插入 std::set 比插入打乱的键快得多?

c++ - 如何以优雅高效的方式实现各种迭代器类别?

c++ - 如何访问(例如,cout)多维 STL vector 中迭代器的当前值 (C++)

c++ - 在类中使用成员函数指针

c++ - 通过 unique_ptr 和自定义删除器使用自动扣除

c++ - 为什么快速排序在重复元素多的情况下效率低下?

c++ - 调用 clear() 后 vector 的元素仍然可以引用?

c++ - Visual C++ Express、调试器、排序关联容器和内存释放