cppPrimer3

来源:互联网 发布:cntv直播软件 编辑:程序博客网 时间:2024/06/07 18:31
十一章:泛型算法 : 排序,查找,最大,最小 ....超过100种算法
1.find(迭代其1,迭代其2,元素);如果没有找到,则返回第二个迭代其实参。
2.标准算法要求:
 1.能遍历 2.能有结尾 3.能够比较 4.
3.算法永不执行容器提供的操作,仅仅是依赖迭代其来实现。(算法基于迭代其);1.范围 2.只读不写 3.
4.copy(),replace(),sort(),unique()唯一,sort(),统计算法count_if(beg,end, 你写的条件函数());
5.算法头文件<algorithm> <numeric>
accumulate(b,e,4);累加b-e的总和再加4
6.find_first_of(b1,e1,b2,e2);找出 第一段内的元素是否在第二段内,是就返回第一个匹配的迭代其。
7.fill(b,e,val);吧b-e内的所有元素都设置为val.
8.fill_n(b,length,val);吧b往后length的元素都设置为val
9.back_inserter()插入迭代其; find_n(back_inserter(vec), 10, 0);效果:在vec后面push_back()了10个0元素值。
1.copy(b,e,obj); ==> vector<int> obj(b,e);这样的copy效果类是与obj初始化给b,e范围效果一样.
2.replace(b,e,0,42);每一个等于0的值,都会替换成42值
3.replace_copy(b,e,back_inserter(obj), 0,24); //obj是b-e的复制,obj中为0的都换成24
4.重新排序:
    唯一排序
  iter end_unique = unique(b,e);  吧不重复的往前靠,end_unique后面的都是重复过的.
  obj.erase(end_unique,obj.end());
5.sort()
  stable_sort()稳健排序,在排序之后,相同元素的排序前后:靠前的元素依旧是考前的。(不过已经重载到sort中了)
6.统计算法
  统计长度不小6的
 count_if(b, e, GT6); bool GT6(const string &s){return s.size >= 6;}


7.迭代其:插入迭代其、iostream迭代其、反向迭代其
插入迭代其:back_inserter,front_inserter,inserter,只有允许push_front操作的 容器才能使用front_inserter
例如: replace_copy(b,e,inserter(list,it),100,0);
      copy(b,e, inserter(list, list.b);
8.流迭代其:暂时不管
9.反向迭代其:find(obj.rbegin(),obj.rend(),',');
1.算法:
 alg(b,e,parm)
 alg(b,e,dest,parm)
 alg(b,e,b2,parm)
 alg(b,e,b2,e2,parm);
2._copy() 复制实现; _if()限制、筛选实现;
3.容器特有算法:merge,remove,reverse,unique,sort,remove_if,
总结:这些算法具有相同的结构,使他们更容易学习使用。
原创粉丝点击