在哪里使用" std :: valarray"?

时间:2017-09-28 08:55:47

标签: c++ c++11 valarray

我在 Nicolai M. Josuttis 撰写的C ++书中读到了std::valarray。他在他的书“C ++标准库”第17.4章中写道:

  

valarray类设计得不是很好。事实上,没有人   试图确定最终规范是否有效。这个   发生的原因是没有人对这些课程感到“负责”。该   将valarrays引入C ++标准库的人离开了   委员会早在标准完成之前。作为结果,   valarrays很少使用。

那么,使用std::valarray

是个好主意

1 个答案:

答案 0 :(得分:3)

创建Valarrays以允许编译器生成更快的可执行文件。但是,这些优化可以通过其他方式实现,并且很少使用valarray。

  

std :: valarray和helper类被定义为没有某些形式的别名,因此允许对这些类的操作进行优化,类似于C编程语言中关键字restrict的效果。此外,允许使用valarray参数的函数和运算符返回代理对象,以使编译器可以优化表达式,例如v1 = a v2 + v3;作为执行v1 [i] = a v2 [i] + v3 [i]的单个循环;避免任何临时或多次传球。   .....

换句话说,当有很多值主要传递给简单表达式时,valarray应该用在那些地方。

  

很少进一步优化valarrays,例如,英特尔Parallel Studio。

您可以在cppreference

找到更多信息