Skip to content

Latest commit

 

History

History
73 lines (62 loc) · 1.65 KB

ranges_clamp.md

File metadata and controls

73 lines (62 loc) · 1.65 KB

clamp

  • algorithm[meta header]
  • std::ranges[meta namespace]
  • function template[meta id-type]
  • cpp20[meta cpp]
namespace std::ranges {
  template<class T, class Proj = identity,
           indirect_strict_weak_order<projected<const T*, Proj>> Comp = ranges::less>
  constexpr const T& clamp(const T& v, const T& lo, const T& hi, Comp comp = {}, Proj proj = {});
}
  • identity[link /reference/functional/identity.md]
  • indirect_strict_weak_order[link /reference/iterator/indirect_strict_weak_order.md]
  • projected[link /reference/iterator/projected.md]
  • ranges::less[link /reference/functional/ranges_less.md]

概要

値を範囲内に収める。

この関数は、vの値を範囲[low, high]に収める。

事前条件

  • lowの値はhighの値より大きくなってはならない

戻り値

  • vの値がlowより小さければlowを返す
  • vの値がhighより大きければhighを返す
  • そうでなければvを返す

#include <iostream>
#include <algorithm>

int main()
{
  for (int i = 0; i < 10; ++i) {
    // iの値を範囲[2, 7]に収める
    int result = std::ranges::clamp(i, 2, 7);
    std::cout << i << " : " << result << std::endl;
  }
}
  • std::ranges::clamp[color ff0000]

出力

0 : 2
1 : 2
2 : 2
3 : 3
4 : 4
5 : 5
6 : 6
7 : 7
8 : 7
9 : 7

バージョン

言語

  • C++20

処理系

参照