std::valarray
出自 cppreference.com
| 定義於標頭檔 <valarray> |
||
| template< class T > class valarray; |
||
std::valarray 是用於表示與操作數值陣列的類別。它支援元素級(element-wise)的數學運算,以及多種形式的廣義下標運算子、切片(slicing)與間接存取。
目錄 |
[編輯] 附註
std::valarray 及其輔助類別被定義為不含特定形式的別名(aliasing),因此允許對這些類別進行最佳化,效果類似於 C 程式語言中的 restrict 關鍵字。此外,接收 valarray 引數的函式與運算子可以回傳代理物件(proxy objects),使編譯器能夠將如 v1 = a * v2 + v3; 的表示式最佳化為執行 v1[i] = a * v2[i] + v3[i]; 的單一迴圈,從而避免任何臨時物件或多次遍歷。然而,表示式模板(expression templates)使相同的最佳化技術能應用於任何 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 的元素進行零填充位移(zero-filling shift) (公開成員函式) | |
| 對 valarray 的元素進行循環位移(circular shift) (公開成員函式) | |
| 對 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 函式 (函式模板) | |
| 對一個 valarray 與一個數值應用 std::atan2 函式 (函式模板) | |
雙曲函式 | |
| 對 valarray 的每個元素應用 std::sinh 函式 (函式模板) | |
| 對 valarray 的每個元素應用 std::cosh 函式 (函式模板) | |
| 對 valarray 的每個元素應用 std::tanh 函式 (函式模板) | |
[編輯] 輔助類別
| valarray 的類 BLAS 切片:起始索引、長度、步長 (類別) | |
| 應用 slice 後,對 valarray 子集的代理 (類別模板) | |
| valarray 的廣義切片:起始索引、長度集合、步長集合 (類別) | |
| 應用 gslice 後,對 valarray 子集的代理 (類別模板) | |
應用布林遮罩 operator[] 後,對 valarray 子集的代理(類別模板) | |
應用間接 operator[] 後,對 valarray 子集的代理(類別模板) |
[編輯] 推導指引(自 C++17 起)
[編輯] 參見
| (C++26) |
用於 basic_simd 的便捷別名模板,可指定其寬度(別名模板) |
| (C++26) |
用於 basic_simd_mask 的便捷別名模板,可指定其寬度(別名模板) |
| (平行運算 TS v2) |
資料並行向量型別 (類別模板) |
| (平行運算 TS v2) |
元素型別為 bool 的資料並行型別 (類別模板) |