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)

The algorithms library defines functions for a variety of purposes (e.g.
searching, sorting, counting, manipulating) that operate on ranges of
elements. Note that a range is defined as ` [ ` first  ` , ` last  ` ) ` where
last  refers to the element _past_ the last element to inspect or modify.

|

##  Contents

  * 1  Constrained algorithms 
  * 2  Execution policies 
  * 3  Non-modifying sequence operations 
    * 3.1  Batch operations 
    * 3.2  Search operations 
    * 3.3  Fold operations 
  * 4  Modifying sequence operations 
    * 4.1  Copy operations 
    * 4.2  Swap operations 
    * 4.3  Transformation operations 
    * 4.4  Generation operations 
    * 4.5  Removing operations 
    * 4.6  Order-changing operations 
    * 4.7  Sampling operations