我非常喜欢矢量。它们既漂亮又快速。但我知道存在这个叫做 valarray 的东西。为什么我要使用 valarray 而不是向量?我知道 valarrays 有一些语法糖,但除此之外,它们什么时候有用?
原文由 rlbond 发布,翻译遵循 CC BY-SA 4.0 许可协议
我非常喜欢矢量。它们既漂亮又快速。但我知道存在这个叫做 valarray 的东西。为什么我要使用 valarray 而不是向量?我知道 valarrays 有一些语法糖,但除此之外,它们什么时候有用?
原文由 rlbond 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 std::valarray
您可以使用标准的数学符号,例如 v1 = a*v2 + v3
开箱即用。除非您定义自己的运算符,否则这对向量是不可能的。
原文由 Paul Jurczak 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
Valarrays(值数组)旨在将 Fortran 的一些速度带入 C++。您不会制作指针的 valarray,因此编译器可以对代码做出假设并更好地优化它。 (Fortran 这么快的主要原因是没有指针类型,所以不能有指针别名。)
Valarrays 也有允许你以相当简单的方式将它们分割的类,尽管标准的那部分可能需要更多的工作。调整它们的大小是破坏性的,它们缺乏迭代器,自 C++11 以来就有迭代器。
因此,如果您使用的是数字并且方便性并不是那么重要,请使用 valarrays。否则,向量会更方便。