泛型算法

1、迭代器令算法不依赖于容器,但算法依赖于元素类型的操作。

2、算法可能改变容器中保存元素的值,也可能在容器内移动元素,但永远不会直接添加或删除元素。

3、那些只接受一个迭代器来表示第二个序列的算法,都假定第二个序列至少与第一个序列一样长。

4、如果lambda的函数体包含任何单一return语句之外的内容,且暂未指定返回类型,则返回void。

5、lambda不能有默认参数。

6、捕获列表只用于局部非static变量,lambda可以直接使用局部static变量和在它所在函数之外声明的名字。

7、当我们混合使用隐式捕获和显示捕获时,捕获列表中的第一个元素必须是&或=,此符号制定了默认捕获方式为引用或值。且显示捕获的变量必须使用与隐式捕获不同的方式。

8、当我们需要为一个lambda定义返回类型时,必须使用尾置返回类型。

9、如果我们希望传递给bind一个对象而又不拷贝它,就必须使用标准库ref函数。函数ref返回一个对象,包含给定的引用,此对象是可以拷贝的。

10、空的iostream迭代器可以当做尾后迭代器来使用,对于一个绑定到流的迭代器,一旦其关联的流遇到文件尾或遇到IO错误,迭代器的值就与尾后迭代器相等。

11、我们可以对任何具有输出运算符的类型定义ostream_iterator。当创建一个ostream_iterator时,我们可以提供(可选的)第二参数,它是一个字符串,在输出每个元素后都会打印此字符串。此字符串必须是一个C风格字符串(即,一个字符串字面常量,或一个指向以空字符结尾的字符数组的指针)。必须将ostream_iterator绑定到一个指定的流,不允许空的或表示尾后位置的ostream_iterator。

12、反向迭代器调用base()成员函数可转换为普通迭代器。riter和riter.base()指向相邻位置而不是相同位置。

13、对于list和forward_list应该优先使用成员函数版本的算法而不是通用算法。

posted @ 2022-12-30 09:02  许卡文迪  阅读(22)  评论(0编辑  收藏  举报