一、标准库算法:(除特殊说明,否则都是在<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.在运用迭代器时要注意迭代器是否有效,因为在某种成员函数操作之后,迭代器所指元素可能已经不在原位置了。