STL學習筆記15 演算法

2021-08-03 21:09:31 字數 4368 閱讀 8245

演算法庫定義了用來實現各種功能的函式(如查詢、排序、計數、修改等),都是針對指定範圍內元素的操作。需要注意的是,元素的範圍以 [first, last) 的形式指定,其中 last 指的是範圍內最後乙個元素的下乙個元素。在標頭檔案 中定義。

for_each()

//對每個元素執行某個操作

count()

//返回某元素的數量

count_if()

//返回滿足特定條件的元素的數量

min_element()

//返回最小值

max_element()

//返回最大值

minmax_element()

//返回最大值和最小值

find()

//搜尋等於某值的第乙個元素

find_if()

//查詢滿足特定條件的第乙個元素

find_if()

//查詢不滿足特定條件的第乙個元素

search()

//查詢某區間第一次出現位置

search_n()

//查詢滿足條件的第一段「n個連續元素」

find_end()

//查詢一定範圍內最後一次出現位置

find_first_of()

//查詢等於某個值的第乙個元素

adjacent_find()

//查詢彼此相鄰的兩個相同(或其它的關係)的元素

equal()

//確定兩區間是否相同

is_permutation()

//返回兩個無序範圍內是否包含相同元素

mismatch()

//查詢兩個序列中,第乙個不同元素的位置

lexicographical_compare()

//返回字典序更小的範圍

is_sorted()

//返回範圍內的元素是否排序

is_sorted_until()

//返回範圍內第乙個無序元素

is_partitioned()

//返回範圍內的元素在某準則下是否被劃分為兩個部分

partition_point()

//返回範圍內區可進行邊間劃分的元素

is_heap()

//返回範圍內的元素是否是堆排序

is_heap_until()

//返回範圍內第乙個非堆排序的元素

all_of()

//範圍內是否所有元素都滿足某條件

any_of()

//範圍內是否存在某元素滿足某條件

none_of()

//範圍內是否沒有元素滿足某條件

for_each()

//對每個元素執行某個操作

copy()

//從第乙個元素開始,複製某個範圍

copy_if()

//根據某個準則複製元素

copy_n()

//複製n個元素

copy_backward()

//從最後乙個元素開始,從後往前複製某個範圍

move()

//將某一範圍的元素移動到乙個新的位置

move_backward()

//按從後往前的順序移動某一範圍的元素到新的位置

transform()

//合併兩個範圍內的元素並進行修改

merge()

//合併兩個範圍元素

swap_ranges()

//交換兩個範圍的元素

fill()

//將乙個值賦給每個元素

fill_n()

//將乙個值賦給n個的元素

generate()

//將函式的結果賦給每個元素

generate_n()

//將函式的結果賦給n個元素

iota()

//將公升序序列的值賦給每個元素

replace()

//用乙個值替換另乙個值

replace_if()

//將所有滿足特定條件的元素替換為另乙個值

replace_copy()

//複製乙個範圍內的元素,並用乙個值替換為另乙個值

replace_copy_if()

//複製乙個範圍內的元素,並將滿足特定條件的元素替換為另乙個值

remove()

//刪除擁有特定值的元素

remove_if()

//刪除滿足特定條件的元素

remove_copy()

//複製不匹配特定值的元素

remove_copy_if()

//複製不滿足特定條件的元素

unique()

//刪除區間內連續重複的元素

unique_copy()

//刪除區間內連續重複的元素並複製

reverse()

//逆序排列所有元素

reverse_copy()

//複製所有元素並逆序

rotate()

//旋轉元素順序

rotate_copy()

//複製所有元素並旋轉

next_permutation()

//置換元素順序

prev_permutation()

//置換元素順序

shuffle()

//使元素變為隨機順序

random_shuffle()

//使元素變為隨機順序

partition()

//把乙個區間的元素分為兩組,前面的一組滿足某個條件

stable_partition()

//將元素分為兩組,同時保留其相對順序

partition_copy()

//將區間內的元素分為兩組複製到不同位置

sort()

//所有元素排序

stable_sort()

//排序同時保留相對位置

partial_sort()

//排序,直到前n個元素就位

partial_sort_copy()

//排序,直到前n個元素就位,複製這個結果

nth_element()

//根據第n個位置進行排序

partition()

//改變元素次序,是符合某準則的元素放在前面

stable_partition()

//partition()相同,但保持相對位置

partition_copy()

//改變元素次序,是符合某準則的元素放在前面,並複製

make_heap()

//將乙個區間轉換為乙個heap

push_heap()

//將元素加入到乙個heap

pop_heap()

//從heap中刪除乙個元素

sort_heap()

//對heap進行排序

binary_search()

//判斷區間內是否包含某個元素

includes()

//判斷區間內每個元素是否都涵蓋於另乙個區間中

lower_bound()

//搜尋第乙個「大於等於給定值」的元素

upper_bound()

//搜尋第乙個「大於給定值」的元素

equal_range()

//返回「等於給定值」的元素區間

merge()

//合併兩個區間的元素

set_union()

//求兩個區間的並集

set_intersection()

//求兩個區間的交集

set_difference()

//求位於第乙個區間不位於第二個區間的所有元素,形成乙個已序區間

set_symmetric_difference()

//找出只出現於兩區間之一的所有元素,形成乙個已序區間

inplace_merge()

//將兩個連續的已序區間合併

partition_point()

//返回區間劃分邊界元素

accumulate()

//組合所有元素(求和、求積等)

inner_product()

//組合兩區間內所有元素

adjacent_difference()

//將每個元素和其前一元素組合

partial_sum()

//將每個元素和其先前的所以元素組合

STL學習筆記(演算法概述)

演算法標頭檔案 要運用c 標準程式庫的演算法,首先必須包含標頭檔案 使用stl演算法時,經常需要用到仿函式以及函式配接器。它們定義域標頭檔案中。演算法的分類 可以按以下分類方式描述各個stl演算法 非變動性演算法 nonmodifying algorithms 變動性演算法 modifying al...

STL學習筆記之sort演算法

stl所提供的各式各樣的演算法中,sort 是最複雜龐大的乙個。這個演算法接受兩個隨機訪問迭代器,然後將區間內的所有元素以漸增方式由小到大重新排列。還有個版本則允許使用者指定乙個仿函式,作為排序標準。stl中的所有關係型容器都擁有自動排序功能,所以不需要sort演算法。序列式容器中的stack,de...

STL學習筆記(數值演算法)

運用數值演算法之前必須先加入標頭檔案 加工運算後產生結果 1.對序列進行某種運算 taccumulate inputiterator beg,inputiterator end,t initvalue taccumulate inputiterator beg,inputiterator end,t...