问题标签 [valarray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ valarray 与向量
我非常喜欢矢量。它们既漂亮又快速。但我知道存在这个叫做 valarray 的东西。为什么我要使用 valarray 而不是向量?我知道 valarrays 有一些语法糖,但除此之外,它们什么时候有用?
c++ - 指向向量的指针,但不是指向 valarray 的指针?
我正在尝试提取一个 const 指针以部分通过数组。我发现它在使用向量时工作正常,但在使用 valarray 时不会编译(VS 2008)。有人可以解释问题是什么吗?
c++ - 有什么办法可以避免 valarray 和数组之间的复制?
我在一个列表中有很多数据,比如每个元素有几个 kbytes,我想逐个提取每个元素来进行一些数值处理。这些数据最初存储为 float[]。由于处理涉及大量索引和全局计算,我认为 valarray 可能易于编程。但是如果我使用 valarray,我可能必须先从数组复制到 valarray,然后再复制回数组。有没有办法避免这种情况?有什么方法可以让我直接在数组上工作吗?或者你有更好的方法来解决类似的问题吗?
c++ - 为什么 valarray 这么慢?
我正在尝试使用 valarray,因为它在操作向量和矩阵时很像 MATLAB。我首先做了一些性能检查,发现 valarray 无法达到Stroustrup 在C++ 编程语言一书中声明的性能。
测试程序实际上做了 500 万次双倍乘法。我认为 c = a*b 至少可以与for
循环双类型元素乘法相媲美,但我完全错了。我尝试了几台计算机和 Microsoft Visual C++ 6.0 和 Visual Studio 2008。
顺便说一句,我使用以下代码在 MATLAB 上进行了测试:
结果是 46 毫秒。这个时间精度不高;它仅作为参考。
代码是:
运行结果:(最大速度优化的发布模式)
具有相同优化的调试模式:
c++ - std::valarray 和 std::array 有什么区别
valarray
班级看起来和班级一样,你能解释一下array
我更喜欢哪里吗?反之亦然?valarray
array
c++ - valarray vs. vector:为什么要引入 valarray?
是的,之前有人问过这个问题,答案是:
valarray
s(值数组)旨在将 Fortran 的一些速度带入 C++。您不会制作 avalarray
of 指针,因此编译器可以对代码做出假设并更好地优化它。(Fortran 这么快的主要原因是没有指针类型,所以不能有指针别名。)
或者:
valarray
还应该消除任何混叠的可能性 [...]
但这些答案对我来说毫无意义。
valarray
并且vector
是类模板,因此,它们甚至在实例化之前都不存在。
当然, avector<int>
不会引起混叠问题valarray<int>
。
鉴于此, 的目的是什么valarray
,为什么他们不简单地将相同的功能放入其中vector
?
c++ - 将 std::vector 分配给 std::valarray
我有一个vector<vector<double>
, 所以一个值的表(矩阵)。列包含行星的位置和速度,因此行存储同一行星的数据。我想在 a 中转换一行,valarray
因为我需要数学运算。然后我想将 valarrays(行星)存储在一个向量中。我试过这样:
此代码不起作用,并且我在将向量分配给 valarray 时遇到错误(显然不允许)。
有什么方法可以以简单的方式实现我尝试做的事情吗?
c++ - 连接 valarray
我有一些数据存储在std::vector<std::vector<double>
. 我用它std::valarray
从我的std::vector<std::vector<double>
.
有了这个新的,std:valarray<double>
我创建了一个std::vector
corpX,所以我获得了一个std::vector<std:valarray<double>>
. 现在我还需要将每个的前两个值存储std::valarray
在另一个中std::valarray
:
我怎样才能以简单的方式做到这一点?谢谢!
c++ - SSE / AVX 对齐内存上的 valarray
有没有办法确保valarray
使用对齐的内存,以便可以使用 SSE 和 AVX 对其进行矢量化?据我所知,STL 不能保证对齐,并且您不能将分配器传递给 valarray。还有另一种方法可以实现这一目标吗?
提前谢谢!
c++ - 提升指向 valarray 的原始指针
我正在开发一个具有 C 接口以实现兼容性的库
whilecontext
指向存储num_elements
double
s 的原始内存。在代码的其余部分中,是否有任何策略来构造一个std::valarray
临时管理的context
而不在库调用结束后释放它的?