• Chapter 11. Generic Algorithms


    • 概述

      • 标准范型算法不依赖任何类型,唯一隐式依赖的情况是,必须能够对元素做比较。
      • 我在想每次比如查找失败的时候返回的一般都是容器的末端迭代器,为什么不返回false,设计者是为了表示对原则的恪守,还是有必须这样做的理由呢。
      • 范型算法需要容器内元素能够比较,就是要支持==操作,假如不支持的话,还有后备方案,就是需要一个额外参数:实现元素比较的函数名字。
      • 算法永远不会执行特定容器提供的操作,这是原则,假如那种容器不支持这种操作,那就麻烦了。我们写程序的时候最好也要有原则,显得有条理,耦合性也低一点。
    • 算法举例

      • 只读算法
      • 写入算法,相当于只覆盖已有的元素内容,要小心容器的大小不够。
      • 插入算法,引入了back_inserter
      • 算法的_copy版本。比如replace和replace_copy 有什么区别
      • unique算法,把重复的元素移到末尾去。
      • sort和stable_sort
    • 再谈迭代器

      • 标准库定义的迭代器不依赖于特定容器,这句话里有内涵。假如自己定义的iterator,让它等于vec.begin(),这里发生了什么转换吗
      • insert iterators 和容器绑定在一起,实现在容器中插入元素的功能
      • 流迭代器istream_iterator
      • 反向迭代器
      • const迭代器
      • 迭代器总结出来有五种。
      • 注意:向算法传递无效的迭代器类别所引发的错误,编译器期间可能无法捕获。
    • 泛型算法的结构

      • 所有的容器都建立在一致的设计模式上,算法也有共同的设计基础。
      • 其实这里要用的话,只要查文档看算法就行了。
    • 容器特有的算法

      • 因为不是每一个算法都适用与某个容器,就算能用但从性能上来说也没必要,所以有的容器有自己的算法,比如list就有很多自己的算法。
  • 相关阅读:
    URL中传参带有%2F等特殊字符
    js根据对象数组中某一属性值,合并相同项,并对某一属性累加处理
    windows传输文件到linux
    npm 切换源
    linux下安装java
    PowerShell:因为在此系统上禁止运行脚本,解决方法
    wget: 未找到命令
    发货通知单禁止手工新增
    固定提前期
    容差码
  • 原文地址:https://www.cnblogs.com/arctanx/p/5227996.html
Copyright © 2020-2023  润新知