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

你可能感兴趣的:(STL)