The header <algorithm> defines a collection of functions especially designed to be used on ranges of elements.
A range is any sequence of objects that can be accessed through iterators or pointers, such as an array or an instance of some of the STL containers . Notice though, that algorithms operate through iterators directly on the values, not affecting in any way the structure of any possible container (it never affects the size or storage allocation of the container).
Functions in <algorithm>
Non-modifying sequence operations :
for_each |
Apply function to range (template function) |
find |
Find value in range (function template) |
find_if |
Find element in range (function template) |
find_end |
Find last subsequence in range (function template) |
adjacent_find |
Find equal adjacent elements in range (function template) |
count |
Count appearances of value in range (function template) |
count_if |
Return number of elements in range satisfying condition (function template) |
mismatch |
Return first position where two ranges differ (function template) |
equal |
Test whether the elements in two ranges are equal (function template) |
search |
Find subsequence in range (function template) |
search_n |
Find succession of equal values in range (function template) |
Modifying sequence operations :
copy |
Copy range of elements (function template) |
copy_backward |
Copy range of elements backwards (function template) |
swap |
Exchange values of two objects (function template) |
swap_ranges |
Exchange values of two ranges (function template) |
iter_swap |
Exchange values of objects pointed by two iterators (function template) |
transform |
Apply function to range (function template) |
replace |
Replace value in range (function template) |
replace_if |
Replace values in range (function template) |
fill |
Fill range with value (function template) |
fill_n |
Fill sequence with value (function template) |
generate |
Generate values for range with function (function template) |
generate_n |
Generate values for sequence with function (function template) |
remove |
Remove value from range (function template) |
remove_if |
Remove elements from range (function template) |
remove_copy |
Copy range removing value (function template) |
unique |
Remove consecutive duplicates in range (function template) |
unique_copy |
Copy range removing duplicates (function template) |
reverse |
Reverse range (function template) |
rotate |
Rotate elements in range (function template) |
random_shuffle |
Rearrange elements in range randomly (function template) |
partition |
Partition range in two (function template) |
Sorting :
sort |
Sort elements in range (function template) |
stable_sort |
Sort elements preserving order of equivalents (function template) |
partial_sort |
Partially Sort elements in range (function template) |
Binary search (operating on sorted ranges):
lower_bound |
Return iterator to lower bound (function template) |
upper_bound |
Return iterator to upper bound (function template) |
equal_range |
Get subrange of equal elements (function template) |
binary_search |
Test if value exists in sorted array (function template) |
Merge (operating on sorted ranges):
merge |
Merge sorted ranges (function template) |
inplace_merge |
Merge consecutive sorted ranges (function template) |
includes |
Test whether sorted range includes another sorted range (function template) |
set_union |
Union of two sorted ranges (function template) |
Heap :
push_heap |
Push element into heap range (function template) |
pop_heap |
Pop element from heap range (function template) |
make_heap |
Make heap from range (function template) |
sort_heap |
Sort elements of heap (function template) |
Min/max :
min |
Return the lesser of two arguments (function template) |
max |
Return the greater of two arguments (function template) |
min_element |
Return smallest element in range (function template) |
max_element |
Return largest element in range (function template) |