valarray
班级看起来和班级一样,你能解释一下array
我更喜欢哪里吗?反之亦然?valarray
array
问问题
7695 次
3 回答
23
valarray
已经在 C++03 中,array
在 C++11 中是新的valarray
是变长,array
不是。valarray
专为数值计算而设计,并提供大量的操作,包括+
,-
,*
,cos
,sin
, 等等...array
不。valarray
具有检索数组切片(子数组)的接口,array
但没有。
于 2012-01-22T23:19:24.717 回答
6
valarray
是一种动态数据结构,它的大小可以在运行时改变并且执行动态分配。array
是一个静态数据结构,其大小在编译时确定(它也是一个聚合)。
但是,不要使用valarray
;只需使用 avector
代替。
于 2012-01-22T23:19:48.610 回答
6
相关的类模板std::valarray<T>
旨在支持称为表达式模板的优化技术。我没有尝试这样做,但我的理解是规范并不完全要求这一点,也没有真正充分支持这一点。一般来说std::valarray<T>
,这是一个相当专业的类,并没有真正广泛使用。另外,我认为支持的模板参数std::valarray<T>
是有限的集合(例如数字内置类型)。
另一方面std::array<T, n>
是一个固定大小的数组,在固定大小的同时尽可能支持正常的容器接口。本质上,std::array<T>
是一个更方便使用的T[n]
.
于 2012-01-22T23:21:59.787 回答