Previous fileTop of DocumentContentsIndex pageNext file
Apache C++ Standard Library Reference Guide

<algorithm>

Library: Algorithms


Header

Local Index

No Entries

Summary

The header <algorithm> represents the Algorithms library of the C++ Standard Library.

Synopsis

namespace std {
 // lib.alg.nonmodifying, nonmodifying sequence operations:
 template<class InputIterator, class Function>
 Function for_each(InputIterator start, InputIterator finish,
 Function f);
 
 template<class InputIterator, class T>
 InputIterator find(InputIterator start, InputIterator finish,
 const T& value);
 
 template<class InputIterator, class Predicate>
 InputIterator find_if(InputIterator start,
 InputIterator finish,
 Predicate pred);
 
 template<class ForwardIterator1, class ForwardIterator2>
 ForwardIterator1
 find_end(ForwardIterator1 start1, ForwardIterator1 finish1,
 ForwardIterator2 start2, ForwardIterator2 finish2);
 
 template<class ForwardIterator1, class ForwardIterator2,
 class BinaryPredicate>
 ForwardIterator1
 find_end(ForwardIterator1 start1, ForwardIterator1 finish1,
 ForwardIterator2 start2, ForwardIterator2 finish2,
 BinaryPredicate binary_pred);
 
 template<class ForwardIterator1, class ForwardIterator2>
 ForwardIterator1
 find_first_of(ForwardIterator1 start1,
 ForwardIterator1 finish1,
 ForwardIterator2 start2,
 ForwardIterator2 finish2);
 
 template<class ForwardIterator1, class ForwardIterator2,
 class BinaryPredicate>
 ForwardIterator1
 find_first_of(ForwardIterator1 start1,
 ForwardIterator1 finish1,
 ForwardIterator2 start2,
 ForwardIterator2 finish2,
 BinaryPredicate binary_pred);
 
 template<class ForwardIterator>
 ForwardIterator adjacent_find(ForwardIterator start,
 ForwardIterator finish);
 
 template<class ForwardIterator, class BinaryPredicate>
 ForwardIterator adjacent_find(ForwardIterator start,
 ForwardIterator finish,
 BinaryPredicate binary_pred);
 
 template<class InputIterator, class T>
 typename iterator_traits<InputIterator>::difference_type
 count(InputIterator start, InputIterator finish, 
 const T& value);
 template<class InputIterator, class Predicate>
 typename iterator_traits<InputIterator>::difference_type
 count_if(InputIterator start, InputIterator finish, 
 Predicate pred);
 
 template<class InputIterator1, class InputIterator2>
 pair<InputIterator1, InputIterator2>
 mismatch(InputIterator1 start1, InputIterator1 finish1,
 InputIterator2 start2);
 
 template<class InputIterator1, class InputIterator2, 
 class BinaryPredicate>
 pair<InputIterator1, InputIterator2>
 mismatch(InputIterator1 start1, InputIterator1 finish1,
 InputIterator2 start2, BinaryPredicate binary_pred);
 
 template<class InputIterator1, class InputIterator2>
 bool equal(InputIterator1 start1, InputIterator1 finish1,
 InputIterator2 start2);
 
 template<class InputIterator1, class InputIterator2, 
 class BinaryPredicate>
 bool equal(InputIterator1 start1, InputIterator1 finish1,
 InputIterator2 start2, BinaryPredicate binary_pred);
 
 template<class ForwardIterator1, class ForwardIterator2>
 ForwardIterator1 search(ForwardIterator1 start1,
 ForwardIterator1 finish1,
 ForwardIterator2 start2, 
 ForwardIterator2 finish2);
 
 template<class ForwardIterator1, class ForwardIterator2,
 class BinaryPredicate>
 ForwardIterator1 search(ForwardIterator1 start1,
 ForwardIterator1 finish1,
 ForwardIterator2 start2, 
 ForwardIterator2 finish2,
 BinaryPredicate binary_pred);
 
 template<class ForwardIterator, class Size, class T>
 ForwardIterator search_n(ForwardIterator start,
 ForwardIterator finish,
 Size count, 
 const T& value);
 
 template<class ForwardIterator, class Size, class T, 
 class BinaryPredicate>
 ForwardIterator1 search_n(ForwardIterator start,
 ForwardIterator finish,
 Size count, 
 const T& value,
 BinaryPredicate binary_pred);
 
 // lib.alg.modifying.operations, 
 // modifying sequence operations:
 // lib.alg.copy, copy:
 template<class InputIterator, class OutputIterator>
 OutputIterator copy(InputIterator start, InputIterator finish,
 OutputIterator result);
 
 template<class BidirectionalIterator1, 
 class BidirectionalIterator2>
 BidirectionalIterator2 
 copy_backward(BidirectionalIterator1 start,
 BidirectionalIterator1 finish,
 BidirectionalIterator2 result);
 
 // lib.alg.swap, swap:
 template<class T> void swap(T& a, T& b);
 
 template<class ForwardIterator1, class ForwardIterator2>
 ForwardIterator2 swap_ranges(ForwardIterator1 start1,
 ForwardIterator1 finish1,
 ForwardIterator2 start2);
 
 template<class ForwardIterator1, class ForwardIterator2>
 void iter_swap(ForwardIterator1 a, ForwardIterator2 b);
 
 template<class InputIterator, class OutputIterator, 
 class UnaryOperation>
 OutputIterator transform(InputIterator start, 
 InputIterator finish,
 OutputIterator result, 
 UnaryOperation op);
 
 template<class InputIterator1, 
 class InputIterator2, 
 class OutputIterator,
 class BinaryOperation>
 OutputIterator transform(InputIterator1 start1, 
 InputIterator1 finish1,
 InputIterator2 start2, 
 OutputIterator result,
 BinaryOperation binary_op);
 
 template<class ForwardIterator, class T>
 void replace(ForwardIterator start, ForwardIterator finish,
 const T& old_value, const T& new_value);
 
 template<class ForwardIterator, class Predicate, class T>
 void replace_if(ForwardIterator start, ForwardIterator finish,
 Predicate pred, const T& new_value);
 template<class InputIterator, class OutputIterator, class T>
 OutputIterator replace_copy(InputIterator start, 
 InputIterator finish,
 OutputIterator result,
 const T& old_value, 
 const T& new_value);
 
 template<class Iterator, class OutputIterator, 
 class Predicate, class T>
 OutputIterator replace_copy_if(Iterator start, 
 Iterator finish,
 OutputIterator result,
 Predicate pred,
 const T& new_value);
 
 template<class ForwardIterator, class T>
 void fill(ForwardIterator start, ForwardIterator finish, 
 const T& value);
 
 template<class OutputIterator, class Size, class T>
 void fill_n(OutputIterator start, Size n, const T& value);
 
 template<class ForwardIterator, class Generator>
 void generate(ForwardIterator start, ForwardIterator finish,
 Generator gen);
 
 template<class OutputIterator, class Size, class Generator>
 void generate_n(OutputIterator start, Size n, 
 Generator gen);
 
 template<class ForwardIterator, class T>
 ForwardIterator remove(ForwardIterator start, 
 ForwardIterator finish,
 const T& value);
 
 template<class ForwardIterator, class Predicate>
 ForwardIterator remove_if(ForwardIterator start,
 ForwardIterator finish,
 Predicate pred);
 
 template<class InputIterator, class OutputIterator, class T>
 OutputIterator remove_copy(InputIterator start, 
 InputIterator finish,
 OutputIterator result, 
 const T& value);
 
 template<class InputIterator, class OutputIterator, 
 class Predicate>
 OutputIterator remove_copy_if(InputIterator start,
 InputIterator finish,
 OutputIterator result, 
 Predicate pred);
 
 template<class ForwardIterator>
 ForwardIterator unique(ForwardIterator start, 
 ForwardIterator finish);
 
 template<class ForwardIterator, class BinaryPredicate>
 ForwardIterator unique(ForwardIterator start, 
 ForwardIterator finish,
 BinaryPredicate binary_pred);
 
 template<class InputIterator, class OutputIterator>
 OutputIterator unique_copy(InputIterator start, 
 InputIterator finish,
 OutputIterator result);
 
 template<class InputIterator, class OutputIterator, 
 class BinaryPredicate>
 OutputIterator unique_copy(InputIterator start, 
 InputIterator finish,
 OutputIterator result,
 BinaryPredicate binary_pred);
 
 template<class BidirectionalIterator>
 void reverse(BidirectionalIterator start,
 BidirectionalIterator finish);
 
 template<class BidirectionalIterator, class OutputIterator>
 OutputIterator reverse_copy(BidirectionalIterator start,
 BidirectionalIterator finish,
 OutputIterator result);
 
 template<class ForwardIterator>
 void rotate(ForwardIterator start, ForwardIterator mid,
 ForwardIterator finish);
 
 template<class ForwardIterator, class OutputIterator>
 OutputIterator rotate_copy(ForwardIterator start,
 ForwardIterator mid,
 ForwardIterator finish,
 OutputIterator result);
 
 template<class RandomAccessIterator>
 void random_shuffle(RandomAccessIterator start,
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, 
 class RandomNumberGenerator>
 void random_shuffle(RandomAccessIterator start,
 RandomAccessIterator finish,
 RandomNumberGenerator& rand);
 
 // lib.alg.partitions, partitions:
 template<class BidirectionalIterator, class Predicate>
 BidirectionalIterator partition(BidirectionalIterator start,
 BidirectionalIterator finish,
 Predicate pred);
 
 template<class BidirectionalIterator, class Predicate>
 BidirectionalIterator 
 stable_partition(BidirectionalIterator start,
 BidirectionalIterator finish,
 Predicate pred);
 
 // lib.alg.sorting, sorting and related operations:
 // lib.alg.sort, sorting:
 template<class RandomAccessIterator>
 void sort(RandomAccessIterator start, 
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, class Compare>
 void sort(RandomAccessIterator start, 
 RandomAccessIterator finish,
 Compare comp);
 
 template<class RandomAccessIterator>
 void stable_sort(RandomAccessIterator start,
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, class Compare>
 void stable_sort(RandomAccessIterator start,
 RandomAccessIterator finish,
 Compare comp);
 
 template<class RandomAccessIterator>
 void partial_sort(RandomAccessIterator start,
 RandomAccessIterator mid,
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, class Compare>
 void partial_sort(RandomAccessIterator start,
 RandomAccessIterator mid,
 RandomAccessIterator finish, 
 Compare comp);
 
 template<class InputIterator, class RandomAccessIterator>
 RandomAccessIterator partial_sort_copy(InputIterator start,
 InputIterator finish,
 RandomAccessIterator result_start,
 RandomAccessIterator result_finish);
 
 template<class InputIterator, class RandomAccessIterator,
 class Compare>
 RandomAccessIterator partial_sort_copy(InputIterator start,
 InputIterator finish,
 RandomAccessIterator result_start,
 RandomAccessIterator result_finish,
 Compare comp);
 
 template<class RandomAccessIterator>
 void nth_element(RandomAccessIterator start,
 RandomAccessIterator nth,
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, class Compare>
 void nth_element(RandomAccessIterator start,
 RandomAccessIterator nth,
 RandomAccessIterator finish, 
 Compare comp);
 
 // lib.alg.binary.search, binary search:
 template<class ForwardIterator, class T>
 ForwardIterator lower_bound(ForwardIterator start,
 ForwardIterator finish,
 const T& value);
 
 template<class ForwardIterator, class T, class Compare>
 ForwardIterator lower_bound(ForwardIterator start,
 ForwardIterator finish,
 const T& value, 
 Compare comp);
 
 template<class ForwardIterator, class T>
 ForwardIterator upper_bound(ForwardIterator start,
 ForwardIterator finish,
 const T& value);
 
 template<class ForwardIterator, class T, class Compare>
 ForwardIterator upper_bound(ForwardIterator start,
 ForwardIterator finish,
 const T& value, 
 Compare comp);
 
 template<class ForwardIterator, class T>
 pair<ForwardIterator, ForwardIterator>
 equal_range(ForwardIterator start, ForwardIterator finish,
 const T& value);
 
 template<class ForwardIterator, class T, class Compare>
 pair<ForwardIterator, ForwardIterator>
 equal_range(ForwardIterator start, ForwardIterator finish,
 const T& value, Compare comp);
 
 template<class ForwardIterator, class T>
 bool binary_search(ForwardIterator start, 
 ForwardIterator finish,
 const T& value);
 
 template<class ForwardIterator, class T, class Compare>
 bool binary_search(ForwardIterator start, 
 ForwardIterator finish,
 const T& value, 
 Compare comp);
 
 // lib.alg.merge, merge:
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator>
 OutputIterator merge(InputIterator1 start1, 
 InputIterator1 finish1,
 InputIterator2 start2, 
 InputIterator2 finish2,
 OutputIterator result);
 
 template<class InputIterator1, class InputIterator2,
 class OutputIterator, class Compare>
 OutputIterator merge(InputIterator1 start1, 
 InputIterator1 finish1,
 InputIterator2 start2, 
 InputIterator2 finish2,
 OutputIterator result, 
 Compare comp);
 
 template<class BidirectionalIterator>
 void inplace_merge(BidirectionalIterator start,
 BidirectionalIterator mid,
 BidirectionalIterator finish);
 
 template<class BidirectionalIterator, class Compare>
 void inplace_merge(BidirectionalIterator start,
 BidirectionalIterator mid,
 BidirectionalIterator finish, 
 Compare comp);
 
 // lib.alg.set.operations, set operations:
 template<class InputIterator1, class InputIterator2>
 bool includes(InputIterator1 start1, InputIterator1 finish1,
 InputIterator2 start2, InputIterator2 finish2);
 
 template<class InputIterator1, class InputIterator2, 
 class Compare>
 bool includes(InputIterator1 start1, 
 InputIterator1 finish1,
 InputIterator2 start2, 
 InputIterator2 finish2, 
 Compare comp);
 
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator>
 OutputIterator set_union(InputIterator1 start1, 
 InputIterator1 finish1,
 InputIterator2 start2, 
 InputIterator2 finish2,
 OutputIterator result);
 
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator, class Compare>
 OutputIterator set_union(InputIterator1 start1, 
 InputIterator1 finish1,
 InputIterator2 start2, 
 InputIterator2 finish2,
 OutputIterator result, 
 Compare comp);
 
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator>
 OutputIterator set_intersection(InputIterator1 start1,
 InputIterator1 finish1,
 InputIterator2 start2,
 InputIterator2 finish2,
 OutputIterator result);
 
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator, class Compare>
 OutputIterator set_intersection(InputIterator1 start1,
 InputIterator1 finish1,
 InputIterator2 start2,
 InputIterator2 finish2,
 OutputIterator result, 
 Compare comp);
 
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator>
 OutputIterator set_difference(InputIterator1 start1,
 InputIterator1 finish1,
 InputIterator2 start2,
 InputIterator2 finish2,
 OutputIterator result);
 
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator, class Compare>
 OutputIterator set_difference(InputIterator1 start1,
 InputIterator1 finish1,
 InputIterator2 start2,
 InputIterator2 finish2,
 OutputIterator result, 
 Compare comp);
 
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator>
 OutputIterator set_symmetric_difference(
 InputIterator1 start1, 
 InputIterator1 finish1,
 InputIterator2 start2,
 InputIterator2 finish2,
 OutputIterator result);
 
 template<class InputIterator1, class InputIterator2, 
 class OutputIterator, class Compare>
 OutputIterator set_symmetric_difference(
 InputIterator1 start1, 
 InputIterator1 finish1,
 InputIterator2 start2,
 InputIterator2 finish2,
 OutputIterator result,
 Compare comp);
 
 // lib.alg.heap.operations, heap operations:
 template<class RandomAccessIterator>
 void push_heap(RandomAccessIterator start,
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, class Compare>
 void push_heap(RandomAccessIterator start,
 RandomAccessIterator finish,
 Compare comp);
 
 template<class RandomAccessIterator>
 void pop_heap(RandomAccessIterator start, 
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, class Compare>
 void pop_heap(RandomAccessIterator start, 
 RandomAccessIterator finish,
 Compare comp);
 
 template<class RandomAccessIterator>
 void make_heap(RandomAccessIterator start,
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, class Compare>
 void make_heap(RandomAccessIterator start,
 RandomAccessIterator finish,
 Compare comp);
 
 template<class RandomAccessIterator>
 void sort_heap(RandomAccessIterator start,
 RandomAccessIterator finish);
 
 template<class RandomAccessIterator, class Compare>
 void sort_heap(RandomAccessIterator start,
 RandomAccessIterator finish,
 Compare comp);
 
 // lib.alg.min.max, minimum and maximum:
 template<class T> const T& min(const T& a, const T& b);
 
 template<class T, class Compare>
 const T& min(const T& a, const T& b, Compare comp);
 
 template<class T> const T& max(const T& a, const T& b);
 
 template<class T, class Compare>
 const T& max(const T& a, const T& b, Compare comp);
 
 template<class ForwardIterator>
 ForwardIterator min_element(ForwardIterator start,
 ForwardIterator finish);
 
 template<class ForwardIterator, class Compare>
 ForwardIterator min_element(ForwardIterator start,
 ForwardIterator finish,
 Compare comp);
 
 template<class ForwardIterator>
 ForwardIterator max_element(ForwardIterator start,
 ForwardIterator finish);
 
 template<class ForwardIterator, class Compare>
 ForwardIterator max_element(ForwardIterator start,
 ForwardIterator finish,
 Compare comp);
 
 template<class InputIterator1, class InputIterator2>
 bool lexicographical_compare(InputIterator1 start1,
 InputIterator1 finish1,
 InputIterator2 start2,
 InputIterator2 finish2);
 
 template<class InputIterator1, class InputIterator2, 
 class Compare>
 bool lexicographical_compare(InputIterator1 start1,
 InputIterator1 finish1,
 InputIterator2 start2,
 InputIterator2 finish2,
 Compare comp);
 
 // lib.alg.permutation.generators, permutations
 template<class BidirectionalIterator>
 bool next_permutation(BidirectionalIterator start,
 BidirectionalIterator finish);
 
 template<class BidirectionalIterator, class Compare>
 bool next_permutation(BidirectionalIterator start,
 BidirectionalIterator finish, 
 Compare comp);
 
 template<class BidirectionalIterator>
 bool prev_permutation(BidirectionalIterator start,
 BidirectionalIterator finish);
 
 template<class BidirectionalIterator, class Compare>
 bool prev_permutation(BidirectionalIterator start,
 BidirectionalIterator finish, 
 Compare comp);
}

See Also

Algorithms, for_each(), find(), find_if(), find_end(), find_first_of(), adjacent_find(), count(), count_if(), mismatch(), equal(), search(), search_n(), copy(), copy_backward(), swap(), swap_ranges(), iter_swap(), transform(), 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(), partition(), stable_partition(), sort(), partial_sort(), partial_sort_copy(), nth_element(), lower_bound(), upper_bound(), equal_range(), binary_search(), merge(), inplace_merge(), includes(), set_union(), set_intersection(), set_difference(), set_symmetric_difference(), push_heap(), pop_heap(), make_heap(), sort_heap(), min(), max(), min_element(), max_element(), lexicographical_compare(), next_permutation(), prev_permutation()

Standards Conformance

ISO/IEC 14882:1998 -- International Standard for Information Systems --Programming Language C++. Section 25



Previous fileTop of DocumentContentsIndex pageNext file

AltStyle によって変換されたページ (->オリジナル) /