读书笔记——Accelerated C++ Chapter 6

一、标准库算法:(除特殊说明,否则都是在<algorithm>中定义的)

1. find_if:接受迭代器和谓词,返回迭代器(指向满足谓词的第一个元素)

a=find_if(i,str.end(),not_space());

可用于编写split。

2. equal:接收迭代器和谓词,返回布尔值。

equal(s.begin(),s.end(),s.rbegin());

可用于编写判断回文函数。

3. search:接收两对迭代器参数,返回迭代器。第一对知识了要查找的序列,第二对指示了一个序列——为这个序列定位。如果查找失败,将返回第二个参数。

Search(i,e,sep.begin(),sep.end());

  可用于编写查找URL函数。

4. find:接收迭代器和元素,如果找不到所要查找的值,将返回他的第二个参数。

Find(s.homework.begin(),s.homework.end(),0)

5. transform: 接收三个迭代器和一个函数。前两个迭代器指定了待转换元素的区间,第三个迭代器是一个目的地,将保存函数(第四个参数)的运行结果。

Transform(student.begin(),student.end(),back_inserter(grades),grade)

6. accumulate:在<numeric>中定义的。四个参数,头两个指示了一个区间,而函数所做的工作是对区间中的值求和,函数的第三个参数所给定的值是求和结果的开始。第三个参数的类型决定了和的类型。

accumulate(v.begin(),v,end(),0,0)

7. remove_copy:将满足条件(值)的复制到目的地。

Remove_copy(s.homework.begin(),s.homework.end(),back_inserter(nonzero),0)

8. remove_copy_if :将不满足谓词的元素复制到目的地。

Remove_copy_if(students.begin(),students.end(),back_inserter(fail),pgrade)

9. Remove_if:将不满足谓词的元素复制到序列的开头。

Remove_if(students.begin(),students.end(),fgrade)

10. stable_patition: 除了划分区域以外,还会让各区域内的元素的相互顺序保持不变。

Stable_patition(students.begin(),studens.end(),pgrade)

二、其他库函数

Isalnum函数:检验他的参数是否都为一个字母数字字符(一个字母或一个数字)。

 

三、一些定义

1.谓词:接收元素,返回布尔值的函数。

2.迭代器适配器:产生迭代器的函数。常用的是insert_iterators,会让关联的容器动态增长,经常被用作复制算法的目的地。在<iterators>中定义。

3.泛型(后续第八章会进行总结)

四、补充

1.中值和平均值可以反应数值特征。所以在分析算法中可以使用

2.算法总用于元素本身,而非容器。即是改变元素在容器中的位置,但是并没有改变容器本身的特性,例如remove_if。

3.容器的成员可以作用于容器,也可以作用于容器中的元素。

4.在运用迭代器时要注意迭代器是否有效,因为在某种成员函数操作之后,迭代器所指元素可能已经不在原位置了。

原文地址:https://www.cnblogs.com/wenhuozhujiangcha/p/Reading_notes_AcceleratedC.html