使用"std :: valarray"是个好主意?

Jay*_*esh 11 c++ c++11 valarray

std::valarrayNicolai M. Josuttis写的一本C++书中读过.他在他的书"C++标准库"第17.4章中写道:

valarray类的设计并不是很好.事实上,没有人试图确定最终规范是否有效.发生这种情况是因为没有人对这些课程感到"负责".在标准完成之前很久就将valarray引入C++标准库的人离开了委员会.因此,很少使用valarrays.

那么,使用std::valarray哪个好主意?

Pet*_*lev 3

创建 Valarray 是为了让编译器能够更快地执行。然而,这些优化可以通过其他方式实现,并且很少使用 valarray。

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

换句话说,valarray 适合在有大量值且主要传递给简单表达式的地方使用。

valarray 很少会进一步优化,例如 Intel Parallel Studio。

您可以在cppreference中找到更多信息