美文网首页
[GeekBand][STL与泛型编程]第二周笔记

[GeekBand][STL与泛型编程]第二周笔记

作者: 散夜霜 | 来源:发表于2017-03-13 21:52 被阅读0次

Tips:

  1. 算法 Algorithm 是 function template.
  2. Algorithms 看不见 Containers,对其一无所知。所以,它所需要的一切信息都必须从 Iterators 取得。而 Iterators (由 Containers 供应)必须能够回答 Algorithm 的所有提问,才能搭配该 Algorithm 的所有操作。
  3. Algorithm 的一般形式
    A.
template<typename Iterator>
Algorithm(Iterator itr1, Iterator itr2)
{
    …
}

B.

template<typename Iterator, typename Cmp>
Algorithm(Iterator itr1, Iterator itr2, Cmp comp)
{
    …
}
  1. Algorithms 和 Iterators 之间沟通需要通过 iterator_traits 。确保 Iterators 不是 class 时也能正常运件运作。

1. 迭代器的分类

五种 iterator category

struct input_iterator_tag {};
struct output_iterator_tag {};
struct forward_iterator_tag :public input_iterator_tag {};
struct bidirectional_iterator_tag :public forward_iterator_tag {};
struct random_access_iterator_tag :public bidirectional_iterator_tag {};
它们之间的关系

2. 算法举例

  1. 算法 accumulate


    算法 accumulate

    算法 accumulate 对元素执行累计动作。

  2. 算法 for_each


    算法 for_each

    算法 for_each 对每个元素执行同一个动作。
    该算法可用 range-based for statement (Since C++11)代替:

for (decl : coll)
{
    statement
}
  1. 算法 replace,replace_if,replace_copy


    算法 replace 算法 replace_if 算法 replace_copy
  2. 算法 count,count_if


    算法 count,count_if 容器成员函数整理
  3. 算法 find,find_if


    算法 find,find_if 容器成员函数整理
  4. 算法 sort


    算法 sort 使用 容器成员函数整理
  5. 关于 reverse iterator,rbegin(),rend()


    关于 reverse iterator,rbegin(),rend() iterator adapter
  6. 算法 binary_search


    算法 binary_search

3. 仿函数 functors

三类 functor 仿函数主要为算法服务。 仿函数 functors 的可适配(adaptable)条件

4. Adapter

存在多种 Adapters

相关文章

网友评论

      本文标题:[GeekBand][STL与泛型编程]第二周笔记

      本文链接:https://www.haomeiwen.com/subject/kxgqnttx.html