stl算法解析之非变动性算法

一、非变动性算法

函数 说明
for_each() 对每个元素执行某操作
count() 返回元素个数
count_if() 返回满足某一准则(条件)的元素个数
min_element() 返回最小值元素(以迭代器表示)
max_element() 返回最大值元素(以迭代器表示)
find() 搜寻等于某值的第一个元素
find_if() 搜寻满足某个准则的第一个元素
search_n() 搜寻具有某特性的第一段“n个连续元素”
search() 搜寻某个子区间第一次出现的位置
find_end() 搜寻某个子区间最后一次出现的位置
find_first_of() 搜寻等于“某数个值之一”的第一个元素
adjacent_find() 搜寻连续两个相等(或符合特定准则)的元素
equal() 判断两区间是否相等
mismatch() 返回两个序列的各组对应元素中,第一对不相等元素
lexicographical_compare() 判断某一序列在字典顺序下是否小于另一序列

二、函数解析

1 for_each

  UnaryProc for_each(InputIterator beg,InputIterator end,UnaryProc op);
   (1)对区间[beg,end)中的每一个元素调用:   op(elem) 

2 count 和 count_if (元素计数)

 difference_type count(InputIterator beg,InputIterator end,constT & value);
 difference_type count_if(InputIterator beg,InputIterator end,UnaryPredicate op);
    (1)第一种形式会计算区间[beg,end)中元素值等于value的元素个数;
    (2)第二种形式会计算区间[beg,end)中令以下一元判断式 op(elem)结果为true的元素个数

3 min_element 和 max_element (最大值和最小值)

 InputIterator min_element(InputIterator beg,InputIterator end);
 InputIterator min_element(InputIterator beg,InputIterator end,CompFunc op);
 InputIterator max_element(InputIterator beg,InputIterator end);
 InputIterator max_element(InputIterator beg,InputIterator end,CompFunc op);
    (1)返回区间[beg,end)中最小或最大元素的位置.
    (2)无op参数的版本,以operator<进行元素的比较.
    (3)op用来比较两个元素 op(elem1,elem2),若第一个元素小于第二个元素,应当返回true.
    (4)若存在多个最小值或最大值,上述算法返回找到的第一个最小或最大值。

4 find 和 find_if (搜寻第一个匹配元素)

  InputIterator find(InputIterator beg,InputIterator end,const T & value);
  InputIterator find_if(InputIterator beg,InputIterator end,UnaryPredicate op);
     (1)第一种形式返回区间[beg,end)中第一个元素等于value的元素位置。
     (2)第二种形式返回[beg,end)中令一下一元判断式op(elem)结果为true的第一个元素。

5 search_n (搜寻前n个连续匹配值)

  InputIterator search_n(InputIterator beg,InputIterator end,Size count,const T & value);
  InputIterator search_n(InputIterator beg,InputIterator end,Size count,const T & value,BinaryPredicate op);
      (1)第一种形式返回区间[beg,end)中第一组“连续count个元素值全等于value”的元素位置。
      (2)第二种形式返回区间[beg,end)中第一组“连续count个造成一元判断式op(elem,value)结果为true”的元素位置。

6 search ( 搜寻第一个子区间)

  ForwardItertor serach(ForwardItertor beg,ForwardItertor end,
                        ForwardItertor searchBeg,ForwardItertor searchEnd);
  ForwardItertor1 serach(ForwardItertor beg,ForwardItertor end,
                         ForwardItertor searchBeg,ForwardItertor searchEnd,BinaryPredicate op);
       (1)两种形式返回区间[beg,end)内和“区间[searchBeg,searchEnd)完全吻合”的第一个子区间内的第一个元素的位置。
       (2)第一种形式中,子区间的元素必须完全等于[searchBeg,searchEnd)的元素。
       (3)第二种形式中,子区间的元素和[searchBeg,searchEnd)的对应元素必须造成二元判断式op(elem,searchElem)的判断式的结果为true。

7 find_end (搜寻最后一个子区间)

  ForwardItertor find_end(ForwardItertor beg,ForwardItertor end,
                          ForwardItertor searchBeg,ForwardItertor searchEnd);
  ForwardItertor1 find_end(ForwardItertor beg,ForwardItertor end,
                           ForwardItertor searchBeg,ForwardItertor searchEnd,BinaryPredicate op);
         说明同上:search

7 find_first_of (搜寻某些元素第一次出现的地点)

  ForwardItertor find_end(ForwardItertor beg,ForwardItertor end,
                          ForwardItertor searchBeg,ForwardItertor searchEnd);
  ForwardItertor1 find_end(ForwardItertor beg,ForwardItertor end,
                           ForwardItertor searchBeg,ForwardItertor searchEnd,BinaryPredicate op);
     (1)第一种形式返回第一个“既在区间[beg,end)中出现,也在区间[searchbeg,searchEnd)中出现的元素的位置”。
     (2) 第二种形式返回区间[beg,end)中第一个这样的元素:它和区间[searchBeg,searchEnd)中每一个元素执行op(elem,searchElem)结果是true。         

8 adjacent_find (搜寻两个连续且相等的元素)

  InputItertor adjacent_find(InputItertor beg,InputItertor end);
  InputItertor adjacent_find(InputItertor beg,InputItertor end,BinaryPredicate op)
      (1)第一种形式返回区间[beg,end)中第一对“连续两个相等元素“”之中的第一个元素的位置。
      (2)第二种形式返回区间[beg,end)中第一对“连续两个元素使二元判断式op(elem,nextElem)的结果为true”的第一个元素的位置。

你可能感兴趣的:(STL)