您的位置:首页 > 其它

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

2015-04-20 17:43 363 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: