Facebook Page Twitter Page LinkedIn Page
× C++ Standard Library C++ STL Library

C++ Algorithm

The C++ <algorithm> header defines a number of functions which is designed especially to use with ranges of elements. A range is a sequence of elements which can be accessed using an iterator or a pointer, for example - vector, list or array.

C++ - Algorithm Functions

The C++ <algorithm> header defines a number of functions which are listed below:

Non-modifying sequence operations

all_of() Test if all elements in range satisfy specified condition.
any_of() Test if any element in range satisfy specified condition.
none_of() Test if no element in range satisfy specified condition.
for_each() Apply specified function to range.
find() Find value in range.
find_if() Find element in range based on specified condition.
find_if_not() Find element in range based on specified condition (negative condition).
find_end() Find last subsequence in range
find_first_of() Find element from set in range
adjacent_find() Find equal adjacent elements in range
count() Returns number of occurrences of specified value in range.
count_if() Return number of elements in range satisfying specified condition.
mismatch() Return first position where two ranges differ
equal() Test whether the elements in two ranges are equal
is_permutation() Test whether range is permutation of another
search() Search range for subsequence
search_n() Search range for elements

Modifying sequence operations

copy() Copy range of elements.
copy_n() Copy sequence of elements.
copy_if() Copy elements of range based on specified condition.
copy_backward() Copy range of elements backward.
move() Move range of elements
move_backward() Move range of elements backward
swap() Exchange values of two objects
swap_ranges() Exchange values of two ranges
iter_swap() Exchange values of objects pointed to by two iterators
transform() Transform range
replace() Replace old value with a new value in range.
replace_if() Replace values in range based on specified condition.
replace_copy() Copy range and replace old value with a new value.
replace_copy_if() Copy range and replace value based on specified condition.
fill() Fill range with specified value.
fill_n() Fill sequence with specified value.
generate() Generate values for range using specified function.
generate_n() Generate values for sequence with specified function.
remove() Remove specified value from range.
remove_if() Remove elements from range based on specified condition.
remove_copy() Copy range removing value
remove_copy_if() Copy range removing values
unique() Remove consecutive duplicates in range
unique_copy() Copy range removing duplicates
reverse() Reverse the order of elements in range.
reverse_copy() Copy and reverse the order of elements in range.
rotate() Rotate left the elements in range
rotate_copy() Copy range rotated left
random_shuffle() Randomly rearrange elements in range
shuffle() Randomly rearrange elements in range using generator


is_partitioned() Test whether range is partitioned
partition() Partition range in two
stable_partition() Partition range in two - stable ordering
partition_copy() Partition range into two
partition_point() Get partition point


sort() Sort elements in range
stable_sort() Sort elements preserving order of equivalents
partial_sort() Partially sort elements in range
partial_sort_copy() Copy and partially sort range
is_sorted() Check whether range is sorted
is_sorted_until() Find first unsorted element in range
nth_element() Sort element in range

Binary search (operating on partitioned/sorted ranges)

lower_bound() Return iterator to lower bound
upper_bound() Return iterator to upper bound
equal_range() Get subrange of equal elements
binary_search() Test if value exists in sorted sequence

Merge (operating on sorted ranges)

merge() Merge two sorted ranges.
inplace_merge() Merge consecutive sorted ranges
includes() Test whether sorted range includes another sorted range
set_union() Union of two sorted ranges
set_intersection() Intersection of two sorted ranges
set_difference() Difference of two sorted ranges
set_symmetric_difference() Symmetric difference of two sorted ranges


make_heap() Make heap from range.
pop_heap() Delete element from heap range.
push_heap() Push element into heap range.
sort_heap() Sorts elements of heap.
is_heap() Test if range is heap
is_heap_until() Find first element not in heap order


min() Returns the smallest element.
max() Returns the largest element.
minmax() Returns the smallest and largest elements.
min_element() Return smallest element in range
max_element() Return largest element in range
minmax_element() Return smallest and largest elements in range


lexicographical_compare() Lexicographical less-than comparison
next_permutation() Transform range to next permutation
prev_permutation() Transform range to previous permutation