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
See also
TODO
This page was last modified on 2024-03-19