C 泛型演算法常用函式

2021-09-14 08:34:59 字數 2349 閱讀 5176

**:c++常用泛型演算法

td中定義了很好幾種順序容器,它們自身也提供了一些操作,但是還有很多演算法,容器本身沒有提供。 而在algorithm標頭檔案中,提供了許多演算法,適用了大多數順序容器。與c++11相比,很多函式在 c++17與c++20又改變了很多,下面內容基於c++11去簡單介紹.

參考文獻: 或  大家直接去這裡看吧。。我就是拿的這裡的!!!

介紹之前,首先說明兩點:

泛型演算法相關的函式中,經常需要傳入謂詞(predicate)引數。謂詞指的是可呼叫的物件,返回bool型別,例如:函式名、函式指標、lambda函式、過載了operator()的類物件等。包含乙個引數的謂詞稱為一元謂詞(unary predicate), 包含兩個引數的謂詞稱為二元謂詞(binary predicate)。

泛型演算法是stl庫裡面定義的一些演算法,這些演算法可以用乙個介面操作各種資料型別,因此成為泛型演算法。大多演算法定義在標頭檔案algorithm和numeric中。意思就是可以用乙個介面操作各種型別的演算法就是泛型演算法。

a. 判斷給定的容器是否滿足給定條件

all_of(iter1_, iter2_, unarypredicate_)         // 返回bool型別,如果容器內的所有元素, 對一元謂詞為true,則返回true;

any_of(iter1_, iter2_, unarypredicate_)         // 返回bool型別,如果容器任何乙個元素, 對一元謂詞為true,則返回true;

none_of(iter1_, iter2_, unarypredicate_)       // 返回bool型別,如果容器內沒有乙個元素,對一元謂詞為true,則返回true; (與all_of()正好相反)

b. 查詢容器中滿足條件的元素(如果不給定謂詞引數,則會使用opretor==)

find(iter1_,iter2_, value)               // 返回迭代器,它指向第乙個等於value的元素。

find_if(iter1_,iter2_, unary_predicate_)         // 返回迭代器,它指向第乙個使一元謂詞為true的元素。

find_if_not(iter1_, iter2_, unary_predicate_)      // 返回迭代器,它指向第乙個使一元謂詞為false的元素。

find_first_of(iter1, iter2, iter11, iter22, binarypredicate_) // 返回迭代器, 在[iter1,iter2)中查詢在[iter11,iter22)出現的任意乙個元素, 返回第乙個滿足條件的元素的迭代器。

find_end(iter1, iter2, iter11, iter22, binarypredicate_)  // 返回迭代器, 在 [iter1, iter2)中查詢子串行[iter11, iter22), 返回滿足條件的最後乙個序列的起始元素。

fadjacent_find(iter1, iter2, binaraypredicate_)     // 返回迭代器, 在[iter1, iter2)中查詢相鄰的元素滿足條件的;

c. 查詢容器中滿足條件元素的數目

cout(iter1, iter2, value)               // 返回滿足條件的數目

cout_if(iter1, iter2, unarypredidate_)          // 返回使一元謂詞為true的數目

d. 對容器內的每乙個元素執行相同的操作

for_each(iter1_, iter2_, unaryfunction_)       // 返回unaryfunction_, 該返回值對一般的函式或函式指標用處不大,對函式物件可能會有用;

// 作用:對指定範圍內的所有元素依次執行一元函式操作.

for_each_n(iter1, n, unaryfunction_)         // 返回迭代器,指向n個元素的下乙個元素, 功能類似.(在c++17中開始有)

從這裡到最後的截圖來自: 發現這樣有現成的,真的賴得寫了啊。

C 常用泛型演算法整理

標準庫定義了一些泛型演算法,作為實現容器的某些操作 查詢 拷貝 排序等 的公共介面。泛型意味著這些演算法可以用於不同型別的元素和多種容器型別。泛型演算法本身不執行容器的操作,它們執行在迭代器之上,執行迭代器的操作。泛型演算法一般定義在標頭檔案algorithm中。此外在numeric也定義了一組陣列...

C 常用泛型演算法的使用

include include include include include include using namespace std template void printing const vector vec cout endl void callbc int a,int b void gen...

C 泛型演算法

標準庫並未給每個容器都定義成員函式來實現這些操作,而是定義了一組泛型演算法,稱他們為演算法是因為他們實現了一些經典演算法的公共介面,如排序和搜尋 稱他們為排序的是因為它們可以用於不同型別的元素和多種容器型別。大多數演算法都定義在標頭檔案algorithm中。標準庫還在標頭檔案numeric中定義了一...