C algorithm中find系列函式總結

2021-10-01 06:06:06 字數 2421 閱讀 1942

主要是對find , find_first_of , find_end , find_if , find_if_not這五函式做個總結:

#include

#include

#include

#include

#include

using

namespace std;

bool

isold

(int a)

bool

issmall

(int a,

int b)

bool

isequal

(int a,

int b)

intmain()

; vector<

int>

::iterator iter;

vector<

int> jvec =

; vector<

int> kvec =;

iter =

find

(ivec.

begin()

, ivec.

end(),

5);//1

iter =

find_if

(ivec.

begin()

, ivec.

end(

), isold)

;//2

iter =

find_if_not

(ivec.

begin()

, ivec.

end(

), isold)

;//3

iter =

find_first_of

(ivec.

begin()

, ivec.

end(

), kvec.

begin()

, kvec.

end())

;//4

iter =

find_first_of

(ivec.

begin()

, ivec.

end(

), kvec.

begin()

, kvec.

end(

), isequal)

;//5

iter =

find_end

(ivec.

begin()

, ivec.

end(

), jvec.

begin()

,jvec.

end())

;//6

iter =

find_end

(ivec.

begin()

, ivec.

end(

), kvec.

begin()

, kvec.

end(

), issmall)

;//7

}

首先,find函式就是從乙個迭代器範圍中查詢第乙個匹配的單個元素,如1,在ivec中查詢第一次匹配5的迭代器,返回指向第乙個5的迭代器,詳見:

find_if是從頭開始,匹配自定義函式,這個函式接受乙個引數(來自前面的序列,順序相同),返回bool值,來自定義一些判斷,如2,我新增了乙個判斷是否為偶數的函式,在ivec中查詢第乙個為偶數的迭代器,返回指向第乙個2的迭代器。

詳見:find_if_not則是從頭開始查詢第乙個不匹配自定義函式,和find_if相反,如3,查詢第乙個不為偶數的迭代器,返回指向第乙個1的迭代器。

詳見:find_first_of函式是從乙個迭代器範圍中查詢第乙個匹配的迭代器範圍,有兩種用法,一是直接比較兩個迭代器範圍是否相等,如4,在ivec中查詢kvec,返回指向第乙個3的迭代器;還有一種用法是再加乙個自定義比較函式,這個函式接受兩個引數(兩個序列各乙個,順序相同),返回bool值,來自定義一些判斷,比如5,加了乙個比較是否相等的函式,最後返回的迭代器指向第乙個3。

詳見:find_end的是從末尾開始查詢,也是在乙個迭代器範圍中查詢另外乙個迭代器範圍,方法也同find_first_of一樣有兩種,一種是直接匹配,如6;一種是新增自定義比較函式,如7,我新增了乙個比小的函式,返回的迭代器指向最後乙個2。

詳見:其間區別要細細體會,在不同場景使用,find,find_if,find_if_not都是在乙個迭代器範圍中查詢乙個元素,而find_first_of,find_end則是在乙個迭代器範圍中查詢另乙個迭代器範圍,並且都有新增自定義函式的用法,不同之處在於乙個正序乙個逆序查詢。可以粗略的看出,以find -> find_if , find_if_not -> find_first_of ,find_end功能逐步公升級。

C Algorithm中的函式簡介

algorithm意為 演算法 是c 的標準模版庫 stl 中最重要的標頭檔案之一,提供了大量基於迭代器的非成員模版函式。本文簡單介紹find,swap,sort,for each這幾個函式的功能及使用方法。給定乙個vector容器 vectornums find find nums.begin n...

C algorithm庫中的常用演算法示例

vector int v 查詢相鄰元素的第乙個元素 adjacent find v.begin v.end 折半查詢 binary search v.begin v.end 7 返回指定元素的個數 count v.begin v.end 6 返回指定條件的個數 lambda 初使用 count if...

C algorithm函式簡介 詳細

algorithm意為 演演算法 是c 的標準模版庫 stl 中最重要的標頭檔案之一,提供了大量基於迭代器的非成員模版函式,庫中的演算法主要分為4類 迴圈 對序列中的每個元素執行某操作 for each 查詢 在序列中找出某個值的第一次出現的位置 find 利用底層元素的等於操作符,對範圍內的元素與...