Tuesday, January 12, 2010

C++ Algorithms summary

The following functions are defined in or , 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.

  FI adjacent_find(FI first, FI last);
  FI adjacent_find( FI first, FI last, Pred p);

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)

No comments:

Post a Comment