C 泛型演算法總結

2021-10-02 07:30:47 字數 1501 閱讀 6806

accumulate(b,e,t) 累和(基礎和為t)

注意t的型別必須和序列中元素型別相同,如double序列後面的t就必須是0.0,如果是0就會把序列中的數當成int進行求和

count(b,e,t) 計數,查詢[b,e)中t出現的次數

equal(b1,e1,b2) 確定是否相同,[b1,e1)為序列1,b2為序列2開頭

預設b2序列長度比b1到e1要長

fill(b,e,t) 將[b,e)元素全部替換為t

fill_n(b,n,t) 將b開始的n個元素替換為t

預設從b開始還有不小於n個元素,否則出錯!

copy(b1,e1,b2) 將b1到e1的元素複製到b2開始序列中去,返回b2複製的最後乙個元素的下乙個位置迭代器

注意b2開始也要有足夠長的資料,否則出錯!

replace(b,e,t1,t2) 將b到e區間內等於t1的值都改為t2,改變原序列

replace_copy(b1,e1,b2,t1,t2) 相比replace不改變原序列,而是在b2後複製b1到e1並做相應替換

sort(b,e) 排序

auto iter=unique(b,e) 把出現超過一次的放到序列末尾,返回冗餘尾子串的開頭

erase(iter,e) 刪除尾部的冗餘序列,完成去重

sort可以加謂詞引數以使用自定義規則進行排序

sort(b,e,f)

stable_sort(b,e) 穩定排序,相同元素保留原先順序不變

for_each(b,e,f) 對於b到e每個元素呼叫f函式(如果f的引數是引用就可以改動b到e的值),f可以是lambda表示式

transform(b1,e1,b2,f) 對於b1到e1每個元素都用f轉換並順序存入b2開始的位置(b2可以等於b1,此時函式效果相當於上面的for_each(b1,e1,f)了),f可以是lambda表示式

lambda匿名表示式:

[捕獲列表] (引數) ->return type

其中[捕獲列表]和必須有,其他可以省略。

捕獲列表一定是lambda表示式存在的函式中的區域性非static變數或者所在函式的形參

因為lambda表示式可以直接使用區域性static、全域性、函式之外的名字。

顯式捕獲:捕獲的區域性非static變數寫在引數()裡,加&就代表捕獲引用,否則捕獲的是拷貝。

隱式捕獲:(=)或(&),即告訴編譯器函式體裡不知道哪來的變數就當做是母函式裡的。

=代表函式體中的未知變數是從母函式捕獲的拷貝

&代表函式體中的未知變數是從母函式捕獲的引用

C 泛型演算法總結

accumulate b,e,t 累和 基礎和為t 注意t的型別必須和序列中元素型別相同,如double序列後面的t就必須是0.0,如果是0就會把序列中的數當成int進行求和 count b,e,t 計數,查詢 b,e 中t出現的次數 equal b1,e1,b2 確定是否相同,b1,e1 為序列1...

C 泛型總結

泛型,比較廣泛的資料型別。泛型是資料型別的一種通用表示形式,它可以表示任何一種資料型別 泛型的定義和引用 泛型是具有佔位符 型別引數 的類 結構 介面 和方法。它與普通類的區別是泛型多了乙個或多個表示型別的佔位符,這些佔位符永尖括號括起來。public class myclass 定義屬性mypro...

C 泛型演算法

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