/algorithm/ranges/dsc_pop_heap&action=edit)  
[ ranges::sort_heap  ](/w/cpp/algorithm/ranges/sort_heap "cpp/algorithm/ranges/sort heap") (C++20)  |  turns a max heap into a range of elements sorted in ascending order   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_sort_heap&action=edit)  
  
#####  Minimum/maximum operations  
  
[ ranges::max  ](/w/cpp/algorithm/ranges/max "cpp/algorithm/ranges/max") (C++20)  |  returns the greater of the given values   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_max&action=edit)  
[ ranges::max_element  ](/w/cpp/algorithm/ranges/max_element "cpp/algorithm/ranges/max element") (C++20)  |  returns the largest element in a range   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_max_element&action=edit)  
[ ranges::min  ](/w/cpp/algorithm/ranges/min "cpp/algorithm/ranges/min") (C++20)  |  returns the smaller of the given values   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_min&action=edit)  
[ ranges::min_element  ](/w/cpp/algorithm/ranges/min_element "cpp/algorithm/ranges/min element") (C++20)  |  returns the smallest element in a range   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_min_element&action=edit)  
[ ranges::minmax  ](/w/cpp/algorithm/ranges/minmax "cpp/algorithm/ranges/minmax") (C++20)  |  returns the smaller and larger of two elements   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_minmax&action=edit)  
[ ranges::minmax_element  ](/w/cpp/algorithm/ranges/minmax_element "cpp/algorithm/ranges/minmax element") (C++20)  |  returns the smallest and the largest elements in a range   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_minmax_element&action=edit)  
[ ranges::clamp  ](/w/cpp/algorithm/ranges/clamp "cpp/algorithm/ranges/clamp") (C++20)  |  clamps a value between a pair of boundary values   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_clamp&action=edit)  
  
#####  Permutation operations  
  
[ ranges::is_permutation  ](/w/cpp/algorithm/ranges/is_permutation "cpp/algorithm/ranges/is permutation") (C++20)  |  determines if a sequence is a permutation of another sequence   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_is_permutation&action=edit)  
[ ranges::next_permutation  ](/w/cpp/algorithm/ranges/next_permutation "cpp/algorithm/ranges/next permutation") (C++20)  |  generates the next greater lexicographic permutation of a range of elements   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_next_permutation&action=edit)  
[ ranges::prev_permutation  ](/w/cpp/algorithm/ranges/prev_permutation "cpp/algorithm/ranges/prev permutation") (C++20)  |  generates the next smaller lexicographic permutation of a range of elements   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_prev_permutation&action=edit)  
  
###  [ [ edit
](/mwiki/index.php?title=cpp/algorithm/ranges&action=edit&section=2 "Edit
section: Constrained numeric operations") ]  Constrained numeric operations

Defined in header ` [ <numeric> ](/w/cpp/header/numeric "cpp/header/numeric")
`  
---  
Defined in namespace ` std::ranges `  
[ ranges::iota  ](/w/cpp/algorithm/ranges/iota "cpp/algorithm/ranges/iota") (C++23)  |  fills a range with successive increments of the starting value   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_iota&action=edit)  
  
###  [ [ edit
](/mwiki/index.php?title=cpp/algo