std::experimental::clamp
來自 cppreference.com
< cpp | experimental | simd
定義於標頭檔案 <experimental/simd> |
||
template< class T, class Abi > simd<T, Abi> |
(並行技術規範 v2) | |
目錄 |
[編輯] 引數
v | - | 要限制的元素 |
lo, hi | - | 限制 v 的邊界 |
[編輯] 返回值
對於所有 i ∈ [
0,
size())
,元素逐個應用 std::clamp(v[i], lo[i], hi[i]) 的結果。
[編輯] 示例
執行此程式碼
#include <cstddef> #include <cstdint> #include <experimental/simd> #include <iomanip> #include <iostream> namespace stdx = std::experimental; void println(auto rem, auto const v) { std::cout << rem << ": "; for (std::size_t i = 0; i != v.size(); ++i) std::cout << std::setw(4) << v[i] << ' '; std::cout << '\n'; } int main() { stdx::fixed_size_simd<int, 8> a{[](int i) { static constexpr auto c = {-129, -128, -1, 0, 42, 127, 128, 255}; return c.begin()[i]; }}; println("a", a); stdx::fixed_size_simd<int, 8> lo1{INT8_MIN}; stdx::fixed_size_simd<int, 8> hi1{INT8_MAX}; const auto b = stdx::clamp(a, lo1, hi1); println("b", b); stdx::fixed_size_simd<int, 8> lo2{0}; stdx::fixed_size_simd<int, 8> hi2{UINT8_MAX}; const auto c = stdx::clamp(a, lo2, hi2); println("c", c); }
輸出
a: -129 -128 -1 0 42 127 128 255 b: -128 -128 -1 0 42 127 127 127 c: 0 0 0 0 42 127 128 255
[編輯] 參閱
(C++17) |
將值限制在邊界值對之間 (函式模板) |