# CPP Algorithm

CPP facilitates a number of functions that can be applied on a range of elements. Some of these are:

## Binary search

 FUNCTION USES binary_search To test if the values in the range exists in a sorted sequence or not. equal_range To get the subrange for the equal elements. lower_bound To get the lower bound element of the range. upper_bound To get the upper bound element of the range.

## Heap

 FUNCTION USES is_heap To check whether the range is a heap. is_heap_until To check the position till which a range is a heap. make_heap To create a heap. pop_heap To pop new elements in the heap. push_heap To push new elements in the heap. sort_heap To sort the heap.

## Merge

 FUNCTION USES includes To check whether the sorted range includes another range or not. inplace_merge To merge two consecutive ranges that are sorted. merge To merge two ranges that are in a sorted order. set_union To get the union of two ranges that is sorted. set_intersection To get the intersection of two ranges that is sorted. set_difference To get the difference of two ranges that is sorted. set_symmetric_difference To get the symmetric difference of two ranges that is sorted.

## Min/Max

 FUNCTION USES min To get the smallest element of the range. max To get the largest element of the range. minmax To get the smallest and largest element of the range. min_element To get the smallest element of the range. max_element To get the largest element of the range. minmax_element To get the smallest and largest element of the range.

## Modifying sequence operations:

 FUNCTION USES copy To copy the range of elements. copy_n To copy n elements of the range. copy_if To copy the elements of the range if a certain condition is fulfilled. copy_backward To copy the elements in a backward order. fill To fill the values in the range with a value. fill_n To fill the values in the sequence. generate To generate the values of the range. generate_n To generate the values of the sequence. iter_swap To swap the values of two iterators under reference. move To move the ranges of elements. move_backward To move the range of elements in the backward order. replace To replace the values in the range with a specific value. replace_if To replace the value of the range if a certain condition is fulfilled. replace_copy To copy the range of values by replacing with an element. replace_copy_if To copy the range of values by replacing with an element if a certain condition is fulfilled. remove_copy To copy the values of the range by removing them. remove_copy_if To copy the values of the range by removing them if a condition is fulfilled. reverse To reverse the range. reverse_copy To copy the range by reversing values. rotate To rotate the elements of the range in left direction. rotate_copy To copy the elements of the range which is rotated left. random_shuffle To shuffle the range randomly. remove_if To remove the values of the range if a condition is fulfilled. remove To remove the values from the range. shuffle To shuffle the range randomly with the help of a generator. swap To swap the value of two objects. swap_ranges To swap the value of two ranges. transform To transform all the values in a range. unique_copy To copy the unique elements of the range. unique To identify the unique element of the range.

## Non-modifying sequence operations:

 FUNCTION USES all_of To test a condition to all the elements of the range. any_of To test a condition to some or any of the elements of the range. adjacent_find To make a search for finding the equal and adjacent elements in a range. count To get the count of a value in the range. count_if To get the count of values that satisfies a condition. equal To check if the two ranges have all elements equal. find_if To find an element in the range. find_if_not To find an element in the range but in the opposite way as the above one. find_end To get the last element of the range. find_first_of The find for the element that satisfies a condition and occurs at the first. for_each To apply an operation to all the elements of the range. find To find a value in the range. is_permutation To check whether the range in reference is a permutation of some other range. mismatch To get the value in sequence which is the first mismatch. none_of To check if none of the elements follow the condition or not. search To search for the subsequence in a range. search_n To search the range for the occurrence of an element.

## Partitions

 FUNCTION USES is_partitioned To deduce whether the range is partitioned or not. partition To partition the range. partition_copy To copy the range after partition. partition_point To return the partition point for a range. stable_partition To partition the range in two stable halves.

## Sorting

 FUNCTION USES is_sorted To check whether the range is sorted or not. is_sorted_until To check till which element a range is sorted. nth_element To sort the elements in the range. partial_sort_copy To copy the elements of the range after sorting it. partial_sort To partially sort the elements of the range. stable_sort To sort the elements in the range maintaining the relative equivalent order. sort To sort all the elements in a range.