/next_permutation "cpp/algorithm/next
permutation")  
---  
[ prev_permutation  ](/w/cpp/algorithm/prev_permutation "cpp/algorithm/prev
permutation")  
  
  
  
|  [ is_permutation  ](/w/cpp/algorithm/is_permutation "cpp/algorithm/is
permutation") (C++11)  
---  
  
  
  
  
  
[ C library ](/w/cpp/algorithm#C_library "cpp/algorithm")  
|  [ qsort  ](/w/cpp/algorithm/qsort "cpp/algorithm/qsort")  
---  
  
|  [ bsearch  ](/w/cpp/algorithm/bsearch "cpp/algorithm/bsearch")  
---  
  
[ Numeric operations ](/w/cpp/algorithm#Numeric_operations "cpp/algorithm")  
|  |  [ iota  ](/w/cpp/algorithm/iota "cpp/algorithm/iota") (C++11)   
---  
[ inner_product  ](/w/cpp/algorithm/inner_product "cpp/algorithm/inner
product")  
[ adjacent_difference  ](/w/cpp/algorithm/adjacent_difference
"cpp/algorithm/adjacent difference")  
  
|  [ accumulate  ](/w/cpp/algorithm/accumulate "cpp/algorithm/accumulate")  
---  
[ reduce  ](/w/cpp/algorithm/reduce "cpp/algorithm/reduce") (C++17)  
[ transform_reduce  ](/w/cpp/algorithm/transform_reduce
"cpp/algorithm/transform reduce") (C++17)  
  
|  |  [ partial_sum  ](/w/cpp/algorithm/partial_sum "cpp/algorithm/partial sum")  
---  
[ inclusive_scan  ](/w/cpp/algorithm/inclusive_scan "cpp/algorithm/inclusive
scan") (C++17)  
[ exclusive_scan  ](/w/cpp/algorithm/exclusive_scan "cpp/algorithm/exclusive
scan") (C++17)  
  
|  [ transform_inclusive_scan  ](/w/cpp/algorithm/transform_inclusive_scan
"cpp/algorithm/transform inclusive scan") (C++17)  
---  
[ transform_exclusive_scan  ](/w/cpp/algorithm/transform_exclusive_scan
"cpp/algorithm/transform exclusive scan") (C++17)  
  
  
  
[ Operations on uninitialized memory
](/w/cpp/algorithm#Operations_on_uninitialized_memory "cpp/algorithm")  
|  |  [ uninitialized_copy  ](/w/cpp/memory/uninitialized_copy "cpp/memory/uninitialized copy")  
---  
[ uninitialized_move  ](/w/cpp/memory/uninitialized_move
"cpp/memory/uninitialized move") (C++17)  
[ uninitialized_fill  ](/w/cpp/memory/uninitialized_fill
"cpp/memory/uninitialized fill")  
  
  
  
|  [ uninitialized_copy_n  ](/w/cpp/memory/uninitialized_copy_n
"cpp/memory/uninitialized copy n") (C++11)  
---  
[ uninitialized_move_n  ](/w/cpp/memory/uninitialized_move_n
"cpp/memory/uninitialized move n") (C++17)  
[ uninitialized_fill_n  ](/w/cpp/memory/uninitialized_fill_n
"cpp/memory/uninitialized fill n")  
  
  
  
|  |  [ destroy  ](/w/cpp/memory/destroy "cpp/memory/destroy") (C++17)   
---  
[ destroy_n  ](/w/cpp/memory/destroy_n "cpp/memory/destroy n") (C++17)  
[ destroy_at  ](/w/cpp/memory/destroy_at "cpp/memory/destroy at") (C++17)  
[ construct_at  ](/w/cpp/memory/construct_at "cpp/memory/construct at")
(C++20)  
  
|  [ uninitialized_default_construct
](/w/cpp/memory/uninitialized_default_construct "cpp/memory/uninitialized
default construct") (C++17)  
---  
[ uninitialized_value_construct  ](/w/cpp/memory/uninitialized_value_construct
"cpp/memory/uninitialized value construct") (C++17)  
[ uninitialized_default_construct_n
](/w/cpp/memory/uninitialized_default_construct_n "cpp/memory/uninitialized
default construct n") (C++17)  
[ uninitialized_value_construct_n
](/w/cpp/memory/uninitialized_value_construct_n "cpp/memory/uninitialized
value construct n") (C++17)  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/navbar_content&action=edit)

**Constrained algorithms**

[ Non-modifying sequence operations ](/w/cpp/algorithm/ranges#Non-
modifying_sequence_operations "cpp/algorithm/ranges")  
---  
|  [ ranges::all_of  ranges::any_of  ranges::none_of
](/w/cpp/algorithm/ranges/all_any_none_of "cpp/algorithm/ranges/all any none
of")  
---  
[ ranges::for_each  ](/w/cpp/algorithm/ranges/for_each
"cpp/algorithm/ranges/for each")  
[ ranges::for_each_n  ](/w/cpp/algorithm/ranges/for_each_n
"cpp/algorithm/ranges/for each n")  
[ ranges::lexicographical_compare
](/w/cpp/algorithm/ranges/lexicographical_compare
"cpp/algorithm/ranges/lexicographical compare")  
[ ranges::adja