STL(二十一)非變易演算法

CopperDong發表於2017-09-02

     非變易演算法是一組不破壞運算元據的模板函式,用來對序列資料進行逐個處理、元素查詢、子序列搜尋、統計和匹配。作為演算法函式引數的迭代器,一般為Input Iterator輸入迭代器,具有“++”迭代和“*”訪問操作。通過迭代器的元素遍歷,可對迭代器區間所界定的元素進行操作。因此,非變易演算法具有極為廣泛的適用性,基本上可應用於各種容器。

一、逐個容器元素for_each

#include <stl_algo.h>

template <class InputIter, class Function>
Function for_each(InputIter first, InputIter last, Function f) {
    for (; first != last; ++first) //
        f(*first);
    return f;
}
二、查詢容器元素find

template <class InputIter, class T>
inline InputIter find(InputIter first, InputIter last, const T& val, input_iterator_tag) {
    while (first != last && !(*first == val))
        ++first;
    return first;
 }

三、條件查詢容器元素find_if


四、鄰近查詢容器元素adjacent_find


五、範圍查詢容器元素find_first_of


六、統計等於某值的容器元素個數count


七、條件統計容器元素個數count_if


八、元素不匹配查詢mismatch


九、元素相等判斷equal


十、子序列搜尋search

     search演算法函式在一個序列中搜尋與另一序列匹配的子序列。

十一、重複元素子序列搜尋search_n


十二、最後一個子序列搜尋find_end


相關文章