泛型算法结构
5类迭代器
算法所要求的迭代器操作可以分为5个迭代器类别。
输入迭代器 只读,不写,单遍扫描,只递增
输出迭代器 只写,不读,单遍扫描,只递增
前向迭代器 可读写,多遍扫描,只递增
双向迭代器 可读写,多遍扫描,可递增递减
随机访问迭代器 可读写,多遍扫描,,支持全部迭代器运算
迭代器类别
输入迭代器:可以读取序列中的元素。
支持:
==、!=、++、*(解引用)、->、(*it).member。
输出迭代器:只读不写
支持:++、*(解引用)
前向迭代器:可读写。
双向迭代器:可正反双向读写
随机范围迭代器:常量时间内范围序列中任意元素。
算法形参模式
一般算法就下面4中形式:
alg(beg, end, other args);
alg(beg, end, dest, other args);
alg(beg, end, beg2, other args);
alg(beg, end, beg2, end2, other args);
算法命名规范
接受谓词参数来代替<或==运算的算法,以及那些不接受额外参数的算法,通常都是重载的函数。
_if版本的算法
find(beg, end,val);
//查找输入范围内val第一次出现的位置
find_if(beg, end, pred);
//查找第一个令pred为真的元素
区分拷贝元素的版本和不考贝的版本
一般结果写到额外的目的空间的算法都在名字后面加_copy
reverse(beg,end);
//反转输入范围中元素的顺序
reverse_copy(beg, end, dest);
//将元素按逆序拷贝到dest
还有的提供_copy和_if版本
比如remove
有:remove_if、remove_copy_if两个版本!!!!
PS:哼!!为毛我又一篇博客消失了!!!被CSDN吃了???我还没存档!!!尼玛啊,要不要这么坑,不过
大爷我还是会继续坚持的,尼玛有本事吧我博客全删了。。。。明明没有什么不和谐的啊
又不会被查水表- -~~,⊙﹏⊙b为什么要删我博客。
![发火](http://static.blog.csdn.net/xheditor/xheditor_emot/default/angry.gif)
![大哭](http://static.blog.csdn.net/xheditor/xheditor_emot/default/wail.gif)