【发布时间】:2021-07-09 15:16:12
【问题描述】:
对我来说,R 或 Scilab 等语言中最有趣的功能之一是可以通过矢量化函数并行化操作(“意味着函数将对向量的所有元素进行操作,而无需一次循环并作用于每个元素”,用The Carpentries 的话来说)。这应该使代码更清晰,执行速度更快。
我的问题是:这在 C 或 C++ 中是否可行?我们可以在 C 中创建可以对标量或向量进行操作的函数吗?我们可以像矢量化一样使用标准 C 函数吗?
也许 C 太快了以至于你不需要这个功能,但我想确定一下这个主题,因为这会影响我将算法转换为代码的方式。
更具体地说,如果我想对 C 中向量的每个元素应用一个函数,我应该使用循环,还是有其他替代方法?
【问题讨论】:
-
R 的大多数实际工作马函数都是用 C 或 C++ 编写的。您可以检查来源。
-
@wildplasser 是什么意思?
-
也就是说,这不是一个好问题。它太宽泛了,并且来自于语言未被真正理解的地方。要了解 C,请学习 C。
-
在 C 中,运算符不能重载。您的问题在 C++ 中有意义,而不是 C。
-
如果您的代码在编写时考虑了矢量化,那么好的编译器可以自动矢量化它,而无需程序员进行任何显式矢量化。
标签: c++ c parallel-processing vectorization scilab