C++ Primer Chapter 10-1

来源:互联网 发布:监控摄像头模拟转网络 编辑:程序博客网 时间:2024/06/11 06:51
1:泛型算法的find函数都是传递范围的,找到对应值,则返回第二个参数。

2:泛型算法对容器可能会修改内存中值,但是不会改变容器内存的大小,所有的操作都是基于迭代器完成的。

3:泛型算法接收的范围大部分都是左闭合右开的

4:泛型算法中的比较系列,一般是只读的泛型算法,另外由于比较的特性的存在,一般是比较范围中元素,如果该元素类型未定义比较运算符,会出错。

5:back_inserter() 参数为一个容器的引用,返回一个迭代器,通过该迭代器赋值会调用push_back() 来插入数据
  1. back_inserter( container & c)// c 为容器的引用,返回一个插入迭代器,定义于iterator 迭代器


6:泛型算法的前面两个参数一般为输入序列范围,后面一般为输出(目的)序列起始点,一般要保证后面的序列比前面的序列长

7:不可对空的容器利用常规的迭代器调用 fill_n,如果要调用必须用插入迭代器,back_inserter(),
  1. fill_n(iterator begin, size_type len , type value)
  2. // begin 为起始位置,len 为覆盖元素个数, value为写入的值

注意:这里所指的空和非空是指有没有元素,而并非内存,如果一个 只有 3 个元素但是有10个内存的容器调用
fill_n 函数插入10个元素,是会出现程序崩溃的。所以泛型算法中关于


8: sort 函数是利用 < 符号来排序的。 
  1. sort(iterator begin, iterator end)// 利用 < 进行排序
  1. unique (iterator begin,iterator end)// 提取范围中原始序列不重复元素(只是相邻不重复,而不是整个序列不重复),处理完整个序列后,把结果覆盖到原始序列前部,尾部元素不覆盖,。并返回不重复区域之后的首个位置迭代器

9:谓词:    详见page344 其实就是一个函数参数(函数指针),然后泛型算法根据该谓词对元素进行某些操作。所以元素类型一定要能够转换成谓词的参数类型
由于谓词是对元素进行操作,所以其参数类型必须是元素能够转换过来的

10:find_if() 与 find() 函数的区别是:第三个参数,前者为谓词,后者为实际值。

11:lambda 必须使用尾置返回来制定返回类型。可以省略参数列表返回类型,但是捕获列表函数体不可以省略
  1. [capture list](parameter list)->return type {function body}


12:对于 lambda 的返回类型,如果未指定,函数体只包含一个return语句,无其他内容,则返回 return 中表达式类型,否则返回void
0 0
原创粉丝点击