std::experimental::where_expression
來自 cppreference.com
< cpp | experimental | simd
定義於標頭檔案 <experimental/simd> |
||
template< class M, class V > class where_expression; |
(並行技術規範 v2) | |
類模板 where_expression
抽象了給定算術或資料並行型別的左值中選定元素的概念。選定元素是左值(型別為 V
)的元素,其對應的掩碼(型別為 M
)元素為 true。應用於 where_expression<M, V>
型別物件的運算子僅應用於選定元素。所有其他元素保持不變。
使用 where
函式構造 where_expression
物件。
[編輯] 模板引數
M | - | 掩碼型別 |
V | - | M 應用於的值型別 |
(
M,
V)
的有效組合是
-
(
simd_mask<T, Abi>,
simd<T, Abi>)
, -
(
simd_mask<T, Abi>,
simd_mask<T, Abi>)
, -
(
bool,
T)
.
[編輯] 成員函式
賦值給選定位置 (公開成員函式) | |
複合運算子 (公開成員函式) | |
增量和減量運算子 (公開成員函式) | |
從地址載入到選定位置 (公開成員函式) |
[編輯] 示例
執行此程式碼
#include <cstddef> #include <experimental/simd> #include <iostream> namespace stdx = std::experimental; void print(auto const& a) { for (std::size_t i{}; i != std::size(a); ++i) std::cout << a[i] << ' '; std::cout << '\n'; } template<class A> stdx::simd<int, A> my_abs(stdx::simd<int, A> x) { where(x < 0, x) = -x; return x; } int main() { const stdx::native_simd<int> a([](int i) { return i - 2; }); print(a); const auto b = my_abs(a); print(b); }
可能的輸出
-2 -1 0 1 2 1 0 1