# C++ Algorithms

The following functions are defined in <algorithm> or <numeric> , and are part of the std namespace.

 accumulate sum up a range of elements adjacent_difference compute the differences between adjacent elements in a range adjacent_find finds two identical (or some other relationship) items adjacent to each other binary_search determine if an element exists in a certain range copy copy some range of elements to a new location copy_backward copy a range of elements in backwards order count return the number of elements matching a given value count_if return the number of elements for which a predicate is true equal determine if two sets of elements are the same equal_range search for a range of elements that are all equal to a certain element fill assign a range of elements a certain value fill_n assign a value to some number of elements find find a value in a given range find_end find the last sequence of elements in a certain range find_first_of search for any one of a set of elements find_if find the first element for which a certain predicate is true for_each apply a function to a range of elements generate saves the result of a function in a range generate_n saves the result of N applications of a function includes returns true if one set is a subset of another inner_product compute the inner product of two ranges of elements inplace_merge merge two ordered ranges in-place is_heap returns true if a given range is a heap iter_swap swaps the elements pointed to by two iterators lexicographical_compare returns true if one range is lexicographically less than another lower_bound search for the first place that a value can be inserted while preserving order make_heap creates a heap out of a range of elements max returns the larger of two elements max_element returns the largest element in a range merge merge two sorted ranges min returns the smaller of two elements min_element returns the smallest element in a range mismatch finds the first position where two ranges differ next_permutation generates the next greater lexicographic permutation of a range of elements nth_element put one element in its sorted location and make sure that no elements to its left are greater than any elements to its right partial_sort sort the first N elements of a range partial_sort_copy copy and partially sort a range of elements partial_sum compute the partial sum of a range of elements partition divide a range of elements into two groups pop_heap remove the largest element from a heap prev_permutation generates the next smaller lexicographic permutation of a range of elements push_heap add an element to a heap random_shuffle randomly re-order elements in some range remove remove elements equal to certain value remove_copy copy a range of elements omitting those that match a certain value remove_copy_if create a copy of a range of elements, omitting any for which a predicate is true remove_if remove all elements for which a predicate is true replace replace every occurrence of some value in a range with another value replace_copy copy a range, replacing certain elements with new ones replace_copy_if copy a range of elements, replacing those for which a predicate is true replace_if change the values of elements for which a predicate is true reverse reverse elements in some range reverse_copy create a copy of a range that is reversed rotate move the elements in some range to the left by some amount rotate_copy copy and rotate a range of elements search search for a range of elements search_n search for N consecutive copies of an element in some range set_difference computes the difference between two sets set_intersection computes the intersection of two sets set_symmetric_difference computes the symmetric difference between two sets set_union computes the union of two sets sort sort a range into ascending order sort_heap turns a heap into a sorted range of elements stable_partition divide elements into two groups while preserving their relative order stable_sort sort a range of elements while preserving order between equal elements swap swap the values of two objects swap_ranges swaps two ranges of elements transform applies a function to a range of elements unique remove consecutive duplicate elements in a range unique_copy creates a copy of some range of elements that contains no consecutive duplicates upper_bound searches for the last place that a value can be inserted while preserving order (first place that is greater than the value)