Essential C++第三章 泛型编程风格
指针的算术运算
相关概念
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()
重点
默认参数值提供的规则
- 默认值的解析操作由最右边开始进行。如果我们为某个参数提供了默认值,那么这一参数右侧的所有参数都必须也具有默认参数值才行。
- 默认值只能够指定一次。
使用顺序性容器
相关概念
主要顺序性容器: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。