title: 范型編程_非變易算法
date: 2016-04-30 11:36:49
categories: 算法 #文章文類
tags: [范型編程,STL,Geekband]
8, 范型算法_非變易算法
定義
在不改變操作對象的前提下, 對元素進(jìn)行處理, 比如 查找,子序列搜索,統(tǒng)計(jì)等.
具體包含:
- for_each
- find
- find_if
- adjacent_find
- find_first_of
- count
- count_if
- mismatch
- equal
- search
for_each
對區(qū)域內(nèi)每一個元素應(yīng)用func函數(shù)
find
對區(qū)域內(nèi) 返回第一個==val的迭代器, 否則返回end()
find_if
對區(qū)域內(nèi),返回符合操作的第一個元素, 對元素使用指定函數(shù), 當(dāng)函數(shù)返回true時(shí), 返回.
adjacent_find
對區(qū)域內(nèi), 返回第一個符合操作的元素迭代器. 如果一個元素等于它的下一個元素, 則返回該元素的迭代器.
adjacent_find(2)
對區(qū)域內(nèi), 返回第一個符合操作的元素迭代器. 使用自定義函數(shù)判斷元素和它下一個元素,如果函數(shù)返回true,則返回.否則返回end()
find_first_of
兩個區(qū)域. 返回第一個區(qū)域內(nèi)的元素迭代器 it1, 使得對于區(qū)域2內(nèi)某個元素迭代器it2, 滿足it1==it2 ,沒找到返回end()
count
返回個val值相同的個數(shù).
count_if
返回滿足提供函數(shù)==true的個數(shù)
mismatch(1)
返回在兩個區(qū)域內(nèi) 第一個不一樣的元素的迭代器
mismatch(2)
返回在兩個區(qū)域內(nèi), 兩者同步前進(jìn) 中第一個對于給定函數(shù)==false的迭代第
equal(1)
兩個區(qū)域同步前進(jìn),當(dāng)同位置兩元素相等時(shí),返回true,否則false
equal(2)
使用自定義函數(shù)來判斷
search(1)
在兩個區(qū)域中, 在第一個區(qū)域內(nèi), 查找連續(xù)的一段元素和第二個區(qū)域完全相等.找到則返回第一個區(qū)域中相等段的第一個元素的迭代器.
search(2)
使用自定義函數(shù)來判斷,代替1中的相等.
注:
v.end() 并不是最后一個元素, 是一個結(jié)束符.
一般第一個是判斷是否相等, 第二個是允許用戶自定義行為去判斷處理