C++ Primer 笔记8

来源:互联网 发布:python 重定向 编辑:程序博客网 时间:2024/06/05 10:52
1、find函数检查两个迭代器实参标记范围内的每一个元素。只要找到与给定值相等的元素,find就会返回指向该元素的迭代器。如果没有匹配的元素,find就返回它的第二个迭代器实参,表示查找失败。
2、关键概念:泛型算法永不执行容器提供的操作。算法从不修改基础容器的大小。如果需要添加或删除元素,则必须使用容器操作。
3、accumulate函数:用于指定累加起始值的第三个实参是必要的,因为accumulate对将要累加的元素类型一无所知,因此,除此之外,没有别的办法创建合适的起始值或者关联的类型。
4、写容器元素的算法:使用时必须确保算法所写的序列至少足以存储要写入的元素。
5、back_inserter:使用插入迭代器赋值时,则会在容器中添加一个新元素,其值等于赋值运算的右操作数的值。使用back_inserter的程序必须包含iterator头文件。back_inserter生成一个绑定在该容器上的插入迭代器。
6、如果要以一个已存在的容器为副本创建新容器,更好的方法是直接用输入范围作为新构造容器的初始化式。
7、unique该算法“删除”相邻的重复元素,然后重新排列输入范围内的元素,并且返回一个迭代器,表示无重复的值范围的结束。unique实际上并没有删除任何元素,而是将无重复的元素复制到序列的前端,从而覆盖相邻的重复元素。
8、谓词是做某些检测的函数,返回用于条件判断的类型,指出条件是否成立。
9、五种迭代器:
  输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器
  需要低级类别迭代器的地方,可使用任意一种更高级的迭代器。
10、算法的形参模式:
   alg(beg, end, otherparms);
   alg(beg, end, dest,parms);
   alg(beg, end, beg2, otherparms);
   alg(beg, end, beg2, end2,other parms);
11、对于list对象,应该优先使用list容器特有的成员版本,而不是泛型算法。与对应的泛型算法不同,list容器特有的操作能添加和删除元素。