Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::experimental::clamp

      From cppreference.com
      <cpp‎ |experimental‎ |simd
       
       
       
       
       
      Defined in header<experimental/simd>
      template<class T,class Abi>

      simd<T, Abi>

      clamp(const simd<T, Abi>& v,const simd<T, Abi>& lo,const simd<T, Abi>& hi);
      (parallelism TS v2)

      Contents

      [edit]Parameters

      v - the elements to clamp
      lo, hi - the boundaries to clampv to

      [edit]Return value

      The result of element-wise application ofstd::clamp(v[i], lo[i], hi[i]) for alli ∈[0size()).

      [edit]Example

      Run this code
      #include <cstddef>#include <cstdint>#include <experimental/simd>#include <iomanip>#include <iostream>namespace stdx= std::experimental; void println(auto rem,autoconst 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){staticconstexprauto 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};constauto 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};constauto c= stdx::clamp(a, lo2, hi2);    println("c", c);}

      Output:

      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

      [edit]See also

      (C++17)
      clamps a value between a pair of boundary values
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/simd/clamp&oldid=160007"

      [8]ページ先頭

      ©2009-2025 Movatter.jp