zoukankan      html  css  js  c++  java
  • STL算法概述

    #include<algorithm>    //C++标准库算法

    #include<functional>   //仿函数和函数配接器

    1.nonmodifying algorithm     非变动性算法 (不改动元素,即只能读取)

    2.modifying algorithm           变动性算法

    3.removing algorithm            移除性算法

    4.mutating algorithm            变序性算法

    5.sorting algorithm               排序算法

    6,sorted range algorithm      已序区间算法

    7.numeric algorithm              数值算法

    difference_type用于测定距离,区别正负

    1.非变动性算法

    (1) for_each(begin,end,Unary_func op)  具体见另外博客

    (2) difference_type count (begin,end,const T&value);   //返回value的个数

    (3) difference_type count_if (begin,end,Unarypredicate op); //返回op为true的元素个数

    (4) iterator min_element(begin,end);              //默认less than

         iterator min_element(begin,end,compFunc op);   //op(elem1,elem2);

    (5) iterator max_element(begin,end);

         iterator max_element(begin,end,compFunc op);

    (6) iterator find(begin,end,const T&value);

    (7) iterator find_if(begin,end,UnaryPredicate op);

    如果是已序区间用lower_bound(),upper_bound(),equal_range(),binary_search()可获更高性能

    (8) Input_iterator search_n(begin,end,Size count,const T& value);      //连续count个元素值全是value

         Input_iterator search_n(begin,end,Size count,const T&value,BinaryPredicate op);

         //连续count个元素造成op为true, op(elem,value)

    (9) FowardIterator search(begin1,end1,begin2,end2); //在[begin1,end1)中寻找与[begin2,end2)相同的元素

          FowardIterator search(begin1,end1,Searchbegin2,Searchend2,BinaryPredicate op); 

          //op(elem,searchElem),

    (10) Forward_Iterator find_end(begin1,end1,searchBegin2,searchEnd2);         

           //[begin1,end1)中最后出现的[searchBegin2,searchEnd2)

           Forward_Iterator find_end(begin1,end1,searchBegin2,searchEnd2,BinaryPredicate op);

           //op(elem,searchElem);

    (11)Find_first_of 查找与顺序无关。

         Forward_Iterator  find_first_of(begin1,end1,searchBegin2,searchEnd2)

          //返回一个既在区间[begin1,end1)出现也在[searchBegin2,searchEnd2)出现的元素位置

         Forward_Iterator  find_first_of(begin1,end1,searchBegin2,searchEnd2,BinaryPredicate op);

          //返回一个区间[begin1,end1)和区间[searchBegin2,searchEnd2)内进行op(elem,searchElem)为true

    (12) InputIterator adjacant_find(begin,end);                        //返回连续两个相等元素的第一个位置

            InputIterator adjacant_find(begin,end,BinaryPredicate op);

            //op(elem,nextElem),连续两个元素使以下二元判断式的结果为true

    (13) bool equal(begin1,end1,begin2);

            bool equal(begin1,end1,begin2,BinaryPredicate op);   //op(elem,cmpElem);

    (14) pair<InputIterator1,InputIterator2> mismatch(InputIterator1 begin,InputIterator1 end,InputIterator2 cmpBeg)

            返回[begin,end)和cmpBeg开头的区间第一组相异的对应元素

           pair<InputIterator1,InputIterator2> mismatch(InputIterator1 begin,InputIterator1 end,InputIterator2 cmpBeg,

                                                                                                                                                      BinaryPredicate op);

           op(elem,cmpElem); 返回使判断式为false的对应元素

    (15) bool lexicographical_compare(begin1,end1,begin2,end2);

            bool lexicographical_compare(begin1,end1,begin2,end2,ComFunc op);

            op(elem1,elem2);  elem1小于elem2则为true

    字典顺序定义:

    1.数量不同,如果第一个序列数量少,则为true

    2.相等则false

    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    第三章:Hadoop简介及配置Hadoop-1.2.1,hbase-0.94.13集群
    maven环境的搭建,lemon-OA办公系统的搭建
    如何打开mo文件并修改 PoEdit
    安装Elastix-2.4版本
    RabbitMQ安装
    Yum编译安装Error Downloading Packages报错
    linux:ping不通www.baidu.com
    tar命令解压缩出错
    PV、UV
    使用存储过程创建数据
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058282.html
Copyright © 2011-2022 走看看