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