问题标签 [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.

0 投票
9 回答
59879 浏览

c++ - C++ valarray 与向量

我非常喜欢矢量。它们既漂亮又快速。但我知道存在这个叫做 valarray 的东西。为什么我要使用 valarray 而不是向量?我知道 valarrays 有一些语法糖,但除此之外,它们什么时候有用?

0 投票
1 回答
2199 浏览

c++ - 指向向量的指针,但不是指向 valarray 的指针?

我正在尝试提取一个 const 指针以部分通过数组。我发现它在使用向量时工作正常,但在使用 valarray 时不会编译(VS 2008)。有人可以解释问题是什么吗?

0 投票
2 回答
1156 浏览

c++ - 有什么办法可以避免 valarray 和数组之间的复制?

我在一个列表中有很多数据,比如每个元素有几个 kbytes,我想逐个提取每个元素来进行一些数值处理。这些数据最初存储为 float[]。由于处理涉及大量索引和全局计算,我认为 valarray 可能易于编程。但是如果我使用 valarray,我可能必须先从数组复制到 valarray,然后再复制回数组。有没有办法避免这种情况?有什么方法可以让我直接在数组上工作吗?或者你有更好的方法来解决类似的问题吗?

0 投票
7 回答
11547 浏览

c++ - 为什么 valarray 这么慢?

我正在尝试使用 valarray,因为它在操作向量和矩阵时很像 MATLAB。我首先做了一些性能检查,发现 valarray 无法达到Stroustrup 在C++ 编程语言一书中声明的性能。

测试程序实际上做了 500 万次双倍乘法。我认为 c = a*b 至少可以与for循环双类型元素乘法相媲美,但我完全错了。我尝试了几台计算机和 Microsoft Visual C++ 6.0 和 Visual Studio 2008。

顺便说一句,我使用以下代码在 MATLAB 上进行了测试:

结果是 46 毫秒。这个时间精度不高;它仅作为参考。

代码是:

运行结果:(最大速度优化的发布模式)

具有相同优化的调试模式:

0 投票
3 回答
7695 浏览

c++ - std::valarray 和 std::array 有什么区别

valarray班级看起来和班级一样,你能解释一下array我更喜欢哪里吗?反之亦然?valarrayarray

0 投票
2 回答
4185 浏览

c++ - valarray vs. vector:为什么要引入 valarray?

是的,之前有人问过这个问题,答案是:

valarrays(值数组)旨在将 Fortran 的一些速度带入 C++。您不会制作 a valarrayof 指针,因此编译器可以对代码做出假设并更好地优化它。(Fortran 这么快的主要原因是没有指针类型,所以不能有指针别名。)

或者:

valarray还应该消除任何混叠的可能性 [...]

但这些答案对我来说毫无意义。

valarray并且vector类模板,因此,它们甚至在实例化之前都不存在。
当然, avector<int>不会引起混叠问题valarray<int>

鉴于此, 的目的是什么valarray,为什么他们不简单地将相同的功能放入其中vector

0 投票
1 回答
8730 浏览

c++ - 将 std::vector 分配给 std::valarray

我有一个vector<vector<double>, 所以一个值的表(矩阵)。列包含行星的位置和速度,因此行存储同一行星的数据。我想在 a 中转换一行,valarray因为我需要数学运算。然后我想将 valarrays(行星)存储在一个向量中。我试过这样:

此代码不起作用,并且我在将向量分配给 valarray 时遇到错误(显然不允许)。

有什么方法可以以简单的方式实现我尝试做的事情吗?

0 投票
1 回答
867 浏览

c++ - 连接 valarray

我有一些数据存储在std::vector<std::vector<double>. 我用它std::valarray从我的std::vector<std::vector<double>.

有了这个新的,std:valarray<double>我创建了一个std::vectorcorpX,所以我获得了一个std::vector<std:valarray<double>>. 现在我还需要将每个的前两个值存储std::valarray在另一个中std::valarray

我怎样才能以简单的方式做到这一点?谢谢!

0 投票
1 回答
1234 浏览

c++ - SSE / AVX 对齐内存上的 valarray

有没有办法确保valarray使用对齐的内存,以便可以使用 SSE 和 AVX 对其进行矢量化?据我所知,STL 不能保证对齐,并且您不能将分配器传递给 valarray。还有另一种方法可以实现这一目标吗?

提前谢谢!

0 投票
1 回答
701 浏览

c++ - 提升指向 valarray 的原始指针

我正在开发一个具有 C 接口以实现兼容性的库

whilecontext指向存储num_elements doubles 的原始内存。在代码的其余部分中,是否有任何策略来构造一个std::valarray临时管理的context而不在库调用结束后释放它的?