## Standard Library Algorithms

 Nonmodifying Sequence Operations for_each() find() find_if() find_first_of() adjacent_find() count() count_if() mismatch() equal() search() find_end() search_n() Do operation for each element in a sequence Find first occurrence of a value in a sequence Find first match of a predicate in a sequence Find a value from one sequence in another Find an adjacent pair of values Count occurrences of a value in a sequence Count matches of a predicate in a sequence Find the first elements for which two sequences differ True if the elements of two sequences are pairwise equal Find the first occurrence of a sequence as a subsequence Find the last occurrence of a sequence as a subsequence Find the nth occurrence of a value in a sequence Modifying Sequence Operations transform() copy() copy_backward() swap() iter_swap() swap_ranges() replace() replace_if() replace_copy() replace_copy_if() fill() fill_n() generate() generate_n() remove() remove_if() remove_copy() remove_copy_if() unique() unique_copy() reverse() reverse_copy() rotate() rotate_copy() random_shuffle() Apply an operation to every element in a sequence Copy a sequence starting with its first element Copy a sequence starting with its last element Swap two elements Swap two elements pointed to by iterators Swap elements of two sequences Replace elements with a given value Replace elements matching a predicate Copy a sequence replacing elements with a given value Copy a sequence replacing elements matching a predicate Replace every element with a given value Replace first n elements with a given value Replace every element with the result of an operation Replace first n elements with the result of an operation Remove elements with a value Remove elements matching a predicate Copy a sequence removing elements with a given value Copy a sequence removing elements matching a predicate Remove equal adjacent elements Copy a sequence removing equal adjacent elements Reverse the order of elements Copy a sequence into reverse order Rotate elements Copy a sequence into a rotated sequence Move elements into a uniform distribution Sorted Sequences sort() stable_sort() partial_sort() partial_sort_copy() nth_element() lower_bound() upper_bound() equal_range() binary_search() merge() inplace_merge() partition() stable_partition() Sort with good average efficiency Sort maintaining order of equal elements Get the first part of sequence into order Copy getting the first part of output into order Put the nth element in its proper place Find the first occurrence of a value Find the last occurrence of a value Find a subsequence with a given value Is a given value in a sorted sequence? Merge two sorted sequences Merge two consecutive sorted subsequences Place elements matching a predicate first Place elements matching a predicate first, preserving relative order Set Algorithms includes() set_union() set_intersection() set_difference() set_symmetric_difference() True if a sequence is a subsequence of another Construct a sorted union Construct a sorted intersection Construct a sorted sequence of elements in the first but not the second sequence Construct a sorted sequence of elements in one but not both sequences Heap Operations make_heap() push_heap() pop_heap() sort_heap() Make sequence ready to be used as a heap Add element to heap Remove element from heap Sort the heap Minimum and Maximum min() max() min_element() max_element() lexicographical_compare() Smaller of two values Larger of two values Smallest value in sequence Largest value in sequence Lexicographically first of two sequences Permutations next_perinutation() prev_permutation() Next permutation in lexicographical order Previous permutation in lexicographical order Predicates   equal_to not_equal_to greater less greater_equal less_equal logical_and logical_or logical_not (unary) arg1 == arg2 arg1 != arg2 arg1 > arg2 arg1 < arg2 arg1 >= arg2 arg1 <= arg2 arg1 && arg2 arg1 || arg2 !arg Arithmetic Operations   plus minus multiplies divides modulus negate (unary) arg1 + arg2 arg1 - arg2 arg1 * arg2 arg1 / arg2 arg1 % arg2 -arg Binders, Adapters, and Negaters   bind2nd(y) bind1st(x) mem_fun() mem_fun_ref() ptr_fun() ptr_fun() not1() not2() Call binary function with y as 2nd argument Call binary function with x as 1st argument Call 0-arg member through pointer Call 0-arg member through reference Call unary pointer to function Call binary pointer to function Negate unary predicate Negate binary predicate