【发布时间】:2012-09-25 10:01:11
【问题描述】:
是的,这个has been asked before,答案是:
valarrays(值数组)旨在将 Fortran 的一些速度带入 C++。您不会创建valarray的指针,因此编译器可以对代码做出假设并更好地优化它。 (Fortran这么快的主要原因是没有指针类型,所以不能有指针别名。)
或:
valarray也应该消除任何混叠的可能性 [...]
但这些答案对我来说毫无意义。
valarray 和vector 是类模板,因此,它们甚至在实例化之前存在。
当然,vector<int> 不会像 valarray<int> 那样引起别名问题。
鉴于此,valarray 的目的是什么,为什么他们不简单地将相同的功能放入 vector 中?
【问题讨论】:
-
Valarray 是 STL 的一个半生不熟的功能。目标是提供一个数组类,可以在其中批量执行操作,并在有意义的机器上进行循环融合。现在对 C++ 更有用的是Intel ABB。
-
根据 H. Sutter 的说法,这是 C++98 标准最终确定之前 STL 之前的遗留物。参见例如gotw.ca/publications/mill01.htm