C 標準庫演算法

2021-08-03 23:20:41 字數 2152 閱讀 5315

在遵循「不重複製造輪子」的原則下,對於一些基本演算法,要盡可能地使用標準庫提供的函式(在中定義),一是節省時間,二是標準實現在演算法效能上***。我在此簡要回顧一下標準庫中都提供了哪些常見的演算法。

(1) 基本數學相關:

max(t1, t2)和min(t1, t2), 返回t1和t2中的較大、較小者。

max_element(b, e)和min_element(b, e), 返回兩個迭代器所指定容器的最大、最小者。

accumulate(b, e, t, f[,f]),對b與e之間的每個迭代器,進行f運算並賦值給t。

(2)比較:

equal(b, e, b2, [,p]), 返回乙個布林值,判斷兩個序列中的元素是否相等。

lexicographical_compare(b, e, b2, e2, [,p]), 返回乙個布林值,進行兩個序列的比較,預設使用《關係符。

(3)copy與remove相關:

copy(b, e, d),將由輸出迭代器b和e界定的序列中的值複製到由迭代器d指定的目標容器中,返回乙個值指向目標容器末後面的元素。

remove(b, e, t)和remove_if(b, e, p), 排列容器以使得在[b, e)中使謂詞p為真或等於值t的元素位於這個域的尾部,返回乙個迭代器,該迭代器指示了位於不被「刪除」的元素之後的那個位置。可以與erase函式配合使用,如students.erase(remove_if(students.begin(), students.end(), fail_grade), students.end())得到及格的學生向量。

remove_copy(b, e, d, t) 和remove_copy(b, e, d, p), 與remove類似,不同的是,不改變[b,e), 將使謂詞p為真或等關於值t的元素複製到由迭代器d指定的目標容器中。

replace(b, e, t1, t2)和replace_copy(b, e, d, t1, t2), 將容器[b, e)中的所有等於t1的元素替換為t2, replace_copy不改變源容器,將替換後的序列複製到目標容器並返回end()。

reverse(b, e)和reverse_copy(b, e, d), 將容器[b, e)中的所有元素倒序排列, reverse_copy不改變源容器,將替換後的序列複製到目標容器並返回end()。

unique(b, e)和unique_copy(b, e, d), 將容器[b, e)中的所有重複元素去除, unique_copy不改變源容器,將替換後的序列複製到目標容器並返回end()。

(4)查詢與排序:

binary_search(b, e, t),返回乙個布林值,表示值t是否在容器[b,e)中。

find(b, e, t)和find_if(b, e, p), 返回乙個迭代器,指向乙個序列中首次出現t值或滿足p表示式的元素。

search(b, e, b2, e2, [,p]), 在[b,e)容器中查詢子串行[b2,e2),返回第乙個匹配的子串行首元素的正向迭代器。

sort(b, e, [,p])和stable_sort(b, e, [,p]),對容器[b, e)中的元素進行排序,stable_sort是穩定排序,對相等的各元素保持原來的順序。

(5)其他:

fill(b, e, t), 將由迭代器b,e界定的容器填充值t,返回void型別。

partition(b, e, p)和stable_partition(b, e, p), 將容器[b, e)分為兩部分,使謂詞p為真的元素在前,返回第乙個不滿足謂詞p的元素的迭代器。stable_partition使兩部分的元素保持原來在容器中的先後順序。

transform(b, e, [,b2], d, f]), f函式以b和e界定的序列和以b2指向的等長串行為引數,生成的結果序列儲存到由輸出迭代器d指定的目標容器中。

C 演算法標準庫常用演算法

1.演算法 找到某個值,或者某個謂詞判斷 find find if 計數某個值,或者某個謂詞判斷 count count if 查詢子串行 search 查詢最值 min element 2.隨機數 引擎 分布 例程 include include using namespace std int m...

C 標準庫 heap演算法

heap演算法 就排序而言,heap是一種特別的元素組織方式,應用於heap排序法。heap可被視為乙個序列式群集實作而成的二叉樹,具有兩大性質 1.第乙個元素總是最大 2.總是能夠在對數時間內增加或移除乙個元素。stl提供四種演算法 1.make heap 將區間內的元素轉換為heap 2.pus...

C 標準庫常用演算法

find beg,end,val 根據equal操作符,循序查詢 first,last 內所有的元素,找出第乙個匹配 等同條件者 如果找到,就返回乙個指向匹配元素的迭代器,否者返回迭代器end equal beg1,end1,beg2 確定兩個序列是否相等。如果輸入範圍中的每個元素都與從beg2開始...