zoukankan      html  css  js  c++  java
  • (五)STL算法

    、算法

      1、算法通过迭代器来操作容器中的数据;

      2、算法为模板函数;

    二、迭代器与算法

      1、根据移动能力,将迭代器分成了五类

      2、使用萃取,输出各个容器中,迭代器的类别

      3、其中istream, ostream的迭代器为input和output

      4、算法根据迭代器的种类,去调用相应的函数。注意返回值是通过萃取来确定的difference_type

      5、虽然只定义了两类,但由于继承关系,四类都可以满足。

       6、拷贝(真是复杂啊,感谢候大师!),根据迭代器类型,选择合适的函数。用到了两类萃取,一类是迭代器萃取,

    另一类是类型萃取:对类型提问(拷贝赋值是否重要等)

     

    三、算法示例

      1、stl中的算法,必须要有两个迭代器的指针

      2、accumulate

       (1)除了本身默认的累加操作为,还提供了一个自定义操作的版本;

       (2)binary_op可以是函数或者仿函数。如示例,minus<int>()为仿函数,myclass重载了()操作符,myobj也是一个仿函数;

      3、for_each :c++11的新用法

      4、其中replace_if的pred提供一个判断操作;replace_copy则拷贝到新区间

      5、count/count_if

      左边为stl空间的全局函数,右边为容器的成员函数,尽量用自带的成员函数(由图可知,只有关联容器才实现了自己的count

    顺序容器只能使用全局的)

      6、find/find_if

      7、sort

        (1)  可以自定义比较操作;

      (2)rbegin, rend逆序操作;

      (3)8个关联容器,本身已排序,内部没有sort成员函数;

      (4)不能用全局sort排序list和forward_list

      (5)rbegin和rend就相当于end和begin,不过外面接了一个适配器,来改变其行为

      8、binary_search之前,需要先排序。其中lower_bound返回的是可安插的最低点,upper_bound为可安插的最高点。

  • 相关阅读:
    IOCP十:Client退出后投递WSARecv
    IOCP九:Client退出后投递WSASend
    IOCP九:Client退出后投递WSASend
    CPU线程调度
    CPU线程调度
    windows的磁盘操作之八——格式化分区的思考
    windows的磁盘操作之八——格式化分区的思考
    windows的磁盘操作之六——获取系统所在物理磁盘号
    windows的磁盘操作之六——获取系统所在物理磁盘号
    windows的磁盘操作之七——获取当前所有的物理磁盘号
  • 原文地址:https://www.cnblogs.com/573177885qq/p/10196615.html
Copyright © 2011-2022 走看看