C++ 参考手册

位置:首页 > C++ 参考手册 >数值库 > std::valarray

定义于头文件 <valarray>
template< class T >
class valarray;

std::valarray 是表示并操作值数组的类。它支持逐元素数学运算与多种形式的广义下标运算符、切片及间接访问。

注意

std::valarray 及帮助类定义为免除某些形式的别名使用,从而允许这些类上的操作被优化得类似 C 程序语言中关键词 restrict 的效果。而且,接收 valarray 参数的函数和运算符允许返回代理对象,以使得编译器将诸如 v1 = a*v2 + v3; 的表达式优化成执行 v1[i] = a*v2[i] + v3[i]; 的单个循环,避免任何临时量或多趟运算。然而,表达式模板使得同样的优化技巧对任何 C++ 容器可用,而数值库的主流因灵活性偏好表达式模板甚于 valarray 。某些 C++ 标准库实现使用表达式模板以实现 std::valarray 上的高效运算(例如 GNU libstdc++ 与 LLVM libc++ )。只有少数库进一步优化 valarray ,例如 Intel Integrated Performance Primitives

模板形参

T - 元素的类型。类型必须满足数值类型 (NumericType) 要求

成员类型

 
成员类型 定义
value_type T

成员函数

构造新的数值数组
(公开成员函数)
析构数值数组
(公开成员函数)
为内容赋值
(公开成员函数)
获取/设置 valarray 数组元素、切片或掩码
(公开成员函数)
对 valarray 的每个元素运用一元算术运算符
(公开成员函数)
应用复合赋值运算符到 valarray 的每个元素
(公开成员函数)
与另一 valarray 交换
(公开成员函数)
返回valarray的大小
(公开成员函数)
更改 valarray 的大小
(公开成员函数)
计算所有元素的和
(公开成员函数)
返回最小元素
(公开成员函数)
返回最大的元素
(公开成员函数)
以填入零的方式移动 valarray 的元素
(公开成员函数)
循环移动 valarray 的元素
(公开成员函数)
将函数应用到 valarray 的每个元素
(公开成员函数)

非成员函数

特化 std::swap() 算法
(函数模板)
特化的 std::begin
(函数模板)
特化的 std::end
(函数模板)
对两个 valarray 的每个元素,或一个 valarray 的每个元素和一个值运用二元运算符
(函数模板)
比较两个 valarrays,或比较一个 valarray 和一个值
(函数模板)
应用函数 std::abs 到 valarray 的每个元素
(函数模板)
指数函数
应用函数 std::exp 到 valarray 的每个元素
(函数模板)
应用函数 std::log 到 valarray 的每个元素
(函数模板)
应用函数 std::log10 到 valarray 的每个元素
(函数模板)
幂函数
应用函数 std::pow 到二个 valarray 或一个 valarray 与一个值
(函数模板)
应用函数 std::sqrt 到 valarray 的每个元素
(函数模板)
三角函数
应用函数 std::sin 到 valarray 的每个元素
(函数模板)
应用函数 std::cos 到 valarray 的每个元素
(函数模板)
应用函数 std::tan 到 valarray 的每个元素
(函数模板)
应用函数 std::asin 到 valarray 的每个元素
(函数模板)
应用函数 std::acos 到 valarray 的每个元素
(函数模板)
应用函数 std::atan 到 valarray 的每个元素
(函数模板)
应用函数 std::atan2 到一个 valarray 和一个值
(函数模板)
双曲函数
在 valarray 的每个元素上调用 std::sinh 函数
(函数模板)
在 valarray 的每个元素上调用 std::cosh 函数
(函数模板)
在 valarray 的每个元素上调用 std::tanh 函数
(函数模板)

辅助类

valarray 的 BLAS 式切片:起始下标、长度、跨度
(类)
到 valarray 应用 slice 后的子集的代理
(类模板)
valarray 的通用切片:起始下标、长度集、步幅集
(类)
valarray 应用 gslice 后的子集的代理
(类模板)
到应用布尔掩码 operator[] 后的 valarray 子集的代理
(类模板)
到应用间接 operator[] 后的 valarray 子集的代理。
(类模板)

推导指引(C++17 起)