P508:
迭代器将算法和容器绑定起来
大多数情况下,每个算法都需要使用(至少)两个迭代器指出该算法操纵的元素范围。第一个迭代器指向第一个元素,而第二个迭代器则指向最后一个元素的下一位置。第二个迭代器被用作终止遍历的哨兵(sentinel)。(注:想到x战警逆转未来里面的哨兵了,哈哈。)
标准库提供了超过100中算法。与容器一样,算法有着一致的结构。比起死记全部一百多种算法,了解算法的设计可使我们更容易学习和使用它们。
关键概念:算法永不执行容器提供的操作。算法基于迭代器及其操作实现,而并非基于容器操作。
P510:
使用泛型算法必须包含algorithm头文件:
#include <algorithm>
标准库还定义了一组泛化的算术算法,其命名习惯与泛型算法相同。使用这些算法必须包含numeric头文件:
#include <numeric>
理解算法的最基本方法是了解该算法是否
读元素,
写元素或者
对元素进行重新排序。