您的位置:首页 > 编程语言 > C语言/C++

Essential C++第三章 泛型编程风格

2019-08-05 23:31 190 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Felix_hyfy/article/details/98511923

Essential C++第三章 泛型编程风格

  • 了解Iterator
  • 所有容器的共通操作
  • 使用顺序性容器
  • 使用泛型算法
  • 如何设计一个泛型算法
  • 使用Map
  • 使用Set
  • 如何使用Iterator Inserter
  • 使用iostream Iterator
  • 指针的算术运算

    相关概念

    vector可以是空的,但是数组array则不行

    了解Iterator

    相关概念

    主要泛型算法:

    • 搜索算法:find()、count()、adjacent_find()、find_if()、count_if()、binay_search()、find_first_of()
    • 排序及次序整理算法:merge()、partial_sort()、pattition()、random_shuffle()、reverse()、rotate()、sort()
    • 复制、删除、替换算法:copy()、remove()、remove_if()、replace()、replace_if()、swap()、unique()
    • 关系算法:equal()、includes()、mismatch()
    • 生成与质变算法:fill()、for_each()、generate()、transform()
    • 数值算法:accumulate()、adjacent_difference()、patial_sum()
    • 集合算法:set_union()、set_difference()

    所有容器的共通操作

    相关概念

    共通操作:

    • ==、!=、=、empty()、size()、clear()
    • begin()和end(),其中end()指向容器的最后一个元素的下一位置
    • insert()和erase()

    重点

    默认参数值提供的规则

    1. 默认值的解析操作由最右边开始进行。如果我们为某个参数提供了默认值,那么这一参数右侧的所有参数都必须也具有默认参数值才行。
    2. 默认值只能够指定一次。

    使用顺序性容器

    相关概念

    主要顺序性容器:vector 和 list、deque

    • vector以一块连续内存来存放元素
    • list是双向链表结构,其可以执行前进或后退操作
    • deque的行为和vector很相似,其对于最前端元素的插入和删除操作,效率更高,末端元素也是一样

    使用泛型算法

    重点

    • find()用来搜索无序集合中是否存在某值
    • binary_search()用于有序集合的搜索

    如何设计一个泛型算法

    相关概念

    函数重载机制:参数列表(而非返回类型)不同的两个或多个函数,可以拥有相同的函数名称

    使用Map

    相关概念

    • key-value 键值对
    • it -> first 对应key it -> second 对应value
    • 如果需要储存多份相同的key值,就必须使用multimap

    使用Set

    相关概念

    • set由一群key组合而成。如果我们想知道某值是否存在于某个集合内,就可以使用set。
    • 对于任何key值,set只能储存一份,否则要使用multiset。

    如何使用Iterator Inserter

    使用iostream Iterator

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: