std::valarray和std::array之间有什么区别

What is the difference between std::valarray and std::array

本文关键字:std 什么 区别 array valarray 之间      更新时间:2023-10-16

valarray类和array类看起来一样,你能解释一下我更喜欢valarray而不是array吗?

  • valarray已经在C++03中,array在C++11中是新的
  • valarray是可变长度,array不是
  • valarray是为数值计算而设计的,提供了大量的运算,包括+-*cossin等。array没有
  • valarray有一个接口来检索阵列(子阵列)的切片,而array没有

valarray是一个动态数据结构,其大小可以在运行时更改,并执行动态分配。array是一个静态数据结构,其大小在编译时确定(也是一个聚合)。

不过,不要使用valarray;只需使用CCD_ 21即可。

std::valarray<T>相关的类模板旨在支持称为表达式模板的优化技术。我还没有尝试过这样做,但我的理解是规范并没有完全要求这样做,也没有充分支持这一点。一般来说,std::valarray<T>是一个相当专业化的类,它并没有得到广泛的使用。此外,我认为std::valarray<T>的模板参数支持是一个有限的集合(例如,数字内置类型)。

另一方面,std::array<T, n>是一个固定大小的数组,在固定大小的情况下,尽可能支持正常的容器接口。从本质上讲,std::array<T>T[n]的一个更方便使用的版本。