现在的位置: 首页 > 综合 > 正文

STL算法概述

2012年12月20日 ⁄ 综合 ⁄ 共 2854字 ⁄ 字号 评论关闭

#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

 

抱歉!评论已关闭.