std::valarray
出自cppreference.com
在標頭 <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 的每個元素和一個值 (函數模板) | |
比較兩個 valarrays,或比較一個 valarray 和一個值 (函數模板) | |
應用函數 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 和一個值 (函數模板) | |
雙曲函數 | |
應用函數 std::sinh 到 valarray 的每個元素(函數模板) | |
應用函數 std::cosh 到 valarray 的每個元素(函數模板) | |
應用函數 std::tanh 到 valarray 的每個元素 (函數模板) |
[編輯] 輔助類
valarray 的 BLAS 式切片:起始下標、長度、跨度 (類) | |
到 valarray 應用切片後的子集的代理(類模板) | |
valarray 的通用切片:起始下標、長度集、步幅集 (類) | |
valarray 應用 gslice 後的子集的代理 (類模板) | |
到應用布爾掩碼 operator[] 後的 valarray 子集的代理(類模板) | |
到應用間接 operator[] 後的 valarray 子集的代理。(類模板) |
[編輯] 推導指引(C++17 起)
[編輯] 參閱
(C++26) | 可以指定寬度的 basic_simd 的便利別名模板(別名模板) |
(C++26) | 可以指定寬度的 basic_simd_mask 的便利別名模板(別名模板) |
(並行 TS v2) | 數據並行向量類型 (類模板) |
(並行 TS v2) | 元素類型為 bool 的數據並行類型 (類模板) |