Standard C++ Library Class Reference
uses
In addition to requiring certain iterator capabilities, algorithms may require a container to be in
a specific state. For example, some algorithms can only work on previously sorted containers.
Because most algorithms rely on iterators to gain access to data, they can be grouped according
to the type of iterator they require, as is done in the Algorithms by Iterator section below. They
can also be grouped according to the type of operation they perform.
Algorithms by Mutating/Non-mutating Function
The broadest categorization groups algorithms into two main types: mutating and non-mutating.
Algorithms that alter (or mutate) the contents of a container fall into the mutating group. All
others are considered non-mutating. For example, both fill and sort are mutating algorithms,
while find and for_each are non-mutating.
Non-mutating operations
accumulate find_end max_element
adjacent_find find_first_of min
binary_search find_if min_element
count_min for_each mismatch
count_if includes nth_element
equal lexicographical_compare search
eqaul_range lower_bound search_n
find max
Mutating operations
copy remove_if
copy_backward replace
fill replace_copy
fill_n replace_copy_if
generate replace_if
generate_n reverse
inplace_merge reverse_copy
iter_swap rotate
make_heap rotate_copy
merge set_difference
nth_element set_symmetric_difference
next_permutation set_intersection