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
|
[編輯] 成員函式
構造新的數值陣列 (public member function) | |
銷燬數值陣列 (public member function) | |
賦值內容 (public member function) | |
獲取/設定 valarray 元素、切片或掩碼 (public member function) | |
對 valarray 的每個元素應用一元算術運算子 (public member function) | |
將複合賦值運算子應用於 valarray 的每個元素 (public member function) | |
與另一個 valarray 交換 (public member function) | |
返回 valarray 的大小 (public member function) | |
改變 valarray 的大小 (public member function) | |
計算所有元素的和 (public member function) | |
返回最小元素 (public member function) | |
返回最大元素 (public member function) | |
對 valarray 的元素進行零填充移位 (public member function) | |
對 valarray 的元素進行迴圈移位 (public member function) | |
將函式應用於 valarray 的每個元素 (public member function) |
[編輯] 非成員函式
(C++11) |
特化 std::swap 演算法 (函式模板) |
(C++11) |
過載 std::begin (函式模板) |
(C++11) |
特化 std::end (函式模板) |
對兩個 valarray 的每個元素,或一個 valarray 和一個值應用二元運算子 (函式模板) | |
比較兩個 valarray 或一個 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 的廣義切片:起始索引、長度集、步長集 (類) | |
應用 gslice 後 valarray 子集的代理 (類模板) | |
應用布林掩碼 operator[] 後 valarray 子集的代理(類模板) | |
應用間接 operator[] 後 valarray 子集的代理(類模板) |
[編輯] 推導指南(C++17 起)
[編輯] 參見
(C++26) |
basic_simd 的便利別名模板,可以指定其寬度(別名模板) |
(C++26) |
basic_simd_mask 的便利別名模板,可以指定其寬度(別名模板) |
(並行技術規範 v2) |
資料並行向量型別 (類模板) |
(並行技術規範 v2) |
元素型別為 bool 的資料並行型別 (類模板) |