fork download
  1. #include <cstdlib>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <string>
  5. #include <random>
  6. #include <functional>
  7.  
  8. template <typename DataType = uint32_t>
  9. using randomizer_t = std::independent_bits_engine<
  10. std::default_random_engine,
  11. sizeof(DataType)*4, DataType>;
  12.  
  13. template <class T, class Compare>
  14. constexpr const T& clamp( const T& v, const T& lo, const T& hi, Compare comp )
  15. {
  16. return comp(v, hi) ? std::max(v, lo, comp) : std::min(v, hi, comp);
  17. }
  18.  
  19. template <class T>
  20. constexpr const T& clamp( const T& v, const T& lo, const T& hi )
  21. {
  22. return clamp( v, lo, hi, std::less<>() );
  23. }
  24.  
  25. int main() {
  26.  
  27. std::vector<int> vec(25);
  28. randomizer_t<uint32_t> randomizer;
  29.  
  30. std::generate(std::begin(vec),
  31. std::end(vec),
  32. std::ref(randomizer));
  33.  
  34. std::for_each(std::begin(vec),
  35. std::end(vec),
  36. [](int datapoint) {
  37.  
  38. std::cout << " raw value: " << datapoint << std::endl
  39. << " clamped to int8_t: " << clamp(datapoint, -128, 127) << std::endl
  40. << "clamped to uint8_t: " << clamp(datapoint, 0, 255) << std::endl
  41. << std::endl;
  42. });
  43.  
  44. return 0;
  45. }
Success #stdin #stdout 0.01s 5520KB
stdin
Standard input is empty
stdout
         raw value: 16806
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 15088
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 44248
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 3113
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 46977
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 56007
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 36567
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 2557
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 12098
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 1100
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 39063
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 15444
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 4747
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 56289
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 54450
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 14150
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 14614
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 16656
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 50071
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 18771
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 11822
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 11024
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 38444
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 35588
 clamped to int8_t: 127
clamped to uint8_t: 255

         raw value: 12887
 clamped to int8_t: 127
clamped to uint8_t: 255