我在 Nicolai M. Josuttis 撰写的C ++书中读到了std::valarray
。他在他的书“C ++标准库”第17.4章中写道:
valarray类设计得不是很好。事实上,没有人 试图确定最终规范是否有效。这个 发生的原因是没有人对这些课程感到“负责”。该 将valarrays引入C ++标准库的人离开了 委员会早在标准完成之前。作为结果, valarrays很少使用。
那么,使用std::valarray
?
答案 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
找到更多信息