std::experimental:: clamp
|
헤더 파일에 정의됨
<experimental/simd>
|
||
|
template
<
class
T,
class
Abi
>
simd
<
T, Abi
>
|
(parallelism TS v2) | |
목차 |
매개변수
| v | - | 클램핑할 요소들 |
| lo, hi | - | v 를 클램핑할 경계값 |
반환값
요소별 적용 결과는
std::
clamp
(
v
[
i
]
, lo
[
i
]
, hi
[
i
]
)
를 모든
i ∈
[
0
,
size
(
)
)
에 대해 계산한 값입니다.
예제
#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)
|
값을 한 쌍의 경계값 사이로 고정합니다
(함수 템플릿) |