Generic Programming and the STL笔记2--“不改变操作对象之内容”的算法

来源:互联网 发布:javascript 进度条 编辑:程序博客网 时间:2024/05/21 19:09

1 线性查找

1.1 find

template <class InputIterator, class EqualityComparable>

InputIterator find(InputIterator first, InputIterator last, const EqualityComparable &value);


1.2 find_if

template <class InputIterator, class Predicate>

InputIterator find_if(InputIterator first, InputIterator last, Predicate pred);


1.3 adjacent_find

template <class ForwardIterator>

ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last);


template <class ForwordIterator,, class BinaryPredicate>

ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last, BinnaryPredicate bindary_pred);


1.4 find_first_of

template <class InputIterator, class ForwardIterator>

InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2);

template <class InputIterator, class ForwardIterator, class BinaryPredicate>

InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate comp);


2 子序列匹配

2.1 search

template <class ForwardIterator1, class ForwardIterator2>

ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, FowardIterator first2, ForwardIterator last2);


template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>

ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, FowardIterator first2, ForwardIterator last2, BinaryPredicate binary_pred);


2.2 find_end

template <class ForwardIterator1, class ForwardIterator2>

ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last, ForwardIterator2 first2, ForwardIterator2 last2);


template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>

ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate binary_pred);


2.3 search_n

template <class ForwardIterator, class Integer, class T>

ForwardIterator search_n(ForwardIterator first, ForwardIterator last, Integer count, const T& value);


template <class ForwardIterator, class Integer, class T, class BinaryPredicate>

ForwardIterator search_n(ForwardIterator first, ForwardIterator last, Integer count, const T& value,  BinaryPredicate binary_pred);


3 计算元素个数

3.1 count

template <class InputIterator, class EqualityComparable>

typename iterator_traits<InputIterator>::difference_type

count(InputIterator first, InputIterator last, const EqualityComparable &value);


3.2 count_if
template <class InputIterator, class Predicate>
typename iterator_traits<InputIterator>::difference_type
count_if(InputIterator first, InputIterator last, Predicate pred);


4 for_each
template <class InputIterator, class UnaryFunction>
UnaryFunction for_each(InputIterator first, InputIterator last, UnaryFunction f);


5 比较两个Ranges
5.1 equal
template <class InputIterator1, class InputIterator2>
bool equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);


template <class InputIterator1, class InputIterator2, class BinaryPredicate>
bool equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate binary_pred);


5.2 mismatch
template <class InputIterator1, class InputIterator2>
pair<InputIterator1, InputIterator2>
mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);


template <class InputIterator1, class InputIterator2, class BinaryPredicate>
pair<InputIterator1, InputIterator2>
mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate binary_pred);


5.3 lexicographical_compare
template <class InputIterator1, class InputIterator2>
bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2);


template <class InputIterator1, class InputIterator2, class BinaryPredicate>
bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, BinaryPredicate comp);


6 最大值与最小值
6.1 min
template <class LessThanComparable>
const LessThanComparable& min(const LessThanComparable &a, const LessThanComparable &b);


template <class T, class BinaryPredicate>
const T& min(const T &a, const T &b, BinaryPredicate comp);


6.2 max
template <class LessThanComparable>
const LessThanComparable& max(const LessThanComparable &a, const LessThanComparable &b);


template <class T, class BinaryPredicate>
const T& max(const T &a, const T &b, BinaryPredicate comp);


6.3 min_element
template <class ForwardIterator>
ForwardIterator min_element(ForwardIterator first, ForwardIterator last);


template <class ForwardIterator, class BinaryPredicate>
ForwardIterator min_element(ForwardIterator first, ForwardIterator last, BinaryPredicate comp);


6.4 max_element
template <class ForwardIterator>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last);


template <class ForwardIterator, class BinaryPredicate>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last, BinaryPredicate comp);


0 0
原创粉丝点击