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 的每个元素应用函数
(公开成员函数) |
非成员函数
|
(C++11)
|
特化
std::swap
算法
(函数模板) |
|
(C++11)
|
重载
std::begin
(函数模板) |
|
(C++11)
|
特化
std::end
(函数模板) |
|
对两个 valarray 或一个 valarray 与一个值的每个元素应用二元运算符
(函数模板) |
|
|
比较两个 valarray 或一个 valarray 与一个值
(函数模板) |
|
|
对 valarray 的每个元素应用
abs
函数
(函数模板) |
|
指数函数 |
|
|
对 valarray 的每个元素应用
std::exp
函数
(函数模板) |
|
|
对 valarray 的每个元素应用
std::log
函数
(函数模板) |
|
|
对 valarray 的每个元素应用
std::log10
函数
(函数模板) |
|
幂函数 |
|
|
对两个 valarray 或一个 valarray 与一个值应用
std::pow
函数
(函数模板) |
|
|
对 valarray 的每个元素应用
std::sqrt
函数
(函数模板) |
|
三角函数 |
|
|
对 valarray 的每个元素应用
std::sin
函数
(函数模板) |
|
|
对 valarray 的每个元素应用
std::cos
函数
(函数模板) |
|
|
对 valarray 的每个元素应用
std::tan
函数
(函数模板) |
|
|
对 valarray 的每个元素应用
std::asin
函数
(函数模板) |
|
|
对 valarray 的每个元素应用
std::acos
函数
(函数模板) |
|
|
对 valarray 的每个元素应用
std::atan
函数
(函数模板) |
|
辅助类
|
BLAS风格的valarray切片:起始索引、长度、步长
(类) |
|
|
应用切片后valarray子集的代理
(类模板) |
|
|
valarray的广义切片:起始索引、长度集合、步长集合
(类) |
|
|
应用广义切片后valarray子集的代理
(类模板) |
|
应用布尔掩码
operator[]
后valarray子集的代理
(类模板) |
|
应用间接
operator[]
后valarray子集的代理
(类模板) |
推导指引 (C++17 起)
参见
|
(C++26)
|
可指定宽度的
basic_simd
便捷别名模板
(别名模板) |
|
(C++26)
|
可指定宽度的
basic_simd_mask
便捷别名模板
(别名模板) |
|
(parallelism TS v2)
|
数据并行向量类型
(类模板) |
|
(parallelism TS v2)
|
元素类型为 bool 的数据并行类型
(类模板) |