std::clamp
Актуально для C++23.
#include <algorithm>
Актуально на 2024-03-19.
Define overload #1
template<class T> constexpr const T& clamp(const T& v, const T& lo, const T& hi);
Ограничивает значение "v" в пределах между "lo" и "hi".
Возвращает значение в диапазоне "lo" и "hi".
Example, possible implementation
Define overload #2
template<class T, class Compare> constexpr const T& clamp(const T& v, const T& lo, const T& hi, Compare comp);
Ограничивает значение "v" в пределах между "lo" и "hi".
Возвращает значение в диапазоне "lo" и "hi".
Значения сравниваются с помощью бинарного предиката "comp".
Example, possible implementation
Examples
Example 1:
#include <iostream> #include <algorithm> #include <vector> static void clamp_range(auto begin, auto end, auto out, auto lo, auto hi) { for (auto it=begin; it < end; ++it) { *out = std::clamp(*it, lo, hi); ++out; } } int main() { std::vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9}; clamp_range(std::begin(v), std::end(v), std::begin(v), 3, 7); for (auto it : v) { std::cout << it << '\n'; } return 0; }
3 3 3 4 5 6 7 7 7
Changelog
C++26
TODOC++23
TODOC++20
TODOC++17
TODOC++14
TODOC++11
TODOSee also
TODO
This page was last modified on 2024-03-19