天天看點

頭檔案 algorithm 中的常用函數

algorithm意為"演算法", 是C++的标準模版庫(STL) 中最重要的頭檔案之一,提供了大量基于疊代器的非成員模版函數。

庫函數:

accumulate 累加序列的所有元素 adjacent_difference 計算序列中的相鄰元素是否不同 adjacent_find 查找相鄰的兩個相同(或者有其他關聯)元素 any_of 如果對于任意元素的謂詞測試都為true,則傳回true (C++11) all_of 如果對于所有元素的謂詞測試都為true,則傳回true (C++11) binary_search 确定容器中是否存在某個元素 copy 拷貝元素到新的位置 copy_backward 逆序拷貝元素 count 傳回比對給定值的元素數目 count_if 傳回符合條件的元素數目 (C++11) equal 确定兩個集合中的所有元素皆相同 equal_range 搜尋序列中的由相同元素組成的子序列 fill 為一個序列指派 fill_n 為序列中給定數目的元素指派 find 在序列中查找一個比對值的元素 find_end 在序列中查找最後出現的序列 find_first_of 在序列中查找給定集合的任一進制素 find_if 在序列中查找第一個符合條件的元素 for_each 為序列中的每個元素應用指定的函數 generate 将函數的運作結果儲存在一個序列中 generate_n 将N次驅動函數的結果儲存在一個序列中 includes 檢查一個集合是否是另外一個集合的子集 inner_product 計算兩個序列的内積 inplace_merge 内置式歸并 is_heap 檢查給定的序列是否是堆 (C++11) iter_swap 交換兩個疊代器指向的元素 lexicographical_compare 按字典順序檢查一個序列是否小于另外一個序列 lower_bound 查找第一個插入元素但不影響序列有序性的位置 make_heap 建立一個堆并以序列的形式輸出 max 傳回兩個元素間的較大者 (C++11) max_element 傳回序列中的最大者 merge 對兩個有序序列進行歸并處理 min 傳回兩個元素間的較小者 (C++11) min_element 傳回序列中的最小者 mismatch 查找兩個序列的第一個不相同的位置 next_permutation 依照字典順序生成序列的下一個稍大的排列 none_of 如果對于所有元素的謂詞測試都為false,則傳回true (C++11) nth_element 插入一個元素至它的排序位置并確定它左邊的元素都不大于它右邊的元素 partial_sort 将序列中的前N個元素排序 partial_sort_copy 拷貝并部分排序 partial_sum 計算序列中部分元素之和 partition 将元素序列分成兩組 pop_heap 從一個堆中移除最大的元素 prev_permutation 依照字典順序生成序列的下一個稍小的排列 push_heap 添加一個元素至堆 random_shuffle 随機生成元素的一個排列 remove 移除給定值的所有元素 remove_copy 拷貝一個序列中元素的同時忽略那些比對給定值的元素 remove_copy_if 拷貝一個序列中元素的同時忽略那些符合條件的元素 remove_if 移除序列中所有符合條件的元素 replace 将序列中的一些元素以另外一個值替換 replace_copy 拷貝一個序列并将其中一些替換為新值 replace_copy_if 拷貝一個序列的元素并替換掉那些符合條件的元素 replace_if 替換掉符合條件的元素 reverse 将給定序列反轉順序 reverse_copy 以逆序拷貝元素的方式建立序列的副本 rotate 調換一些元素到序列的左邊 rotate_copy 拷貝并調換元素 search 搜尋子序列 search_n 搜尋N個連續的元素拷貝 set_difference 計算兩個集合的差集 set_intersection 計算兩個集合的并集 set_symmetric_difference 計算兩個集合的對稱差 set_union 計算兩個集合的交集 sort 将序列按升序排序 sort_heap 将堆轉變成有序序列 stable_partition 将元素劃分成兩組且維持原來的元素次序 stable_sort 将序列排序并且維持相等元素的原始次序 swap 交換兩個對象的值 swap_ranges 交換兩個序列的元素 transform 通過給定函數轉換序列元素 unique 移除連續的重複元素 unique_copy 拷貝序列并忽略相同元素以建立一個無重複元素的集合 upper_bound 搜尋最後一個插入元素并能維持序列有序性的位置(第一個稍大于給定值的位置)    

頭檔案algorithm中的常用函數分類:

1. 查找算法 (13)  

    為判斷容器中是否包含某一個值提供

adjacent_find()

binary_search()

count()

count_if()

equal_range()

find()

find_end()

find_first_of()

find_if()

lower_bound()

upper_bound()

search()

search_n()

2. 排序(sorting)和通用(ordering)算法(14)

    提供元素的排序政策。

    其中stable算法保證相等元素的原來順序不變。

inplace_merge()

merge()

nth_element()

partial_sort()

partial_sort_copy()

partition()

random_shuffle()

reverse()

reverse_copy()

rotate()

rotate_copy()

sort()

stable_sort()

stable_partition()

3. 删除和替換算法(15)

copy()

copy_backwards()

iter_swap()

remove()

remove_copy()

remove_if()

remove_copy_if()

replace()

replace_copy()

replace_if()

replace_copy_if()

swap()

swap_range()

unique()

unique_copy()

4. 排列組合算法(2)

    提供計算給定集合按一定順序的所有可能的排列組合。

next_permutation()

prev_permutation()

5. 算術算法(4)

accumulate()

partial_sum()

inner_product()

adjacent_difference()

6. 生成和異變算法(6)

fill()

fill_n()

for_each()

generate()

generate_n()

transform()

7. 關系算法(7)

equal()

includes()

lexicographical_compare()

max()

max_element()

min()

min_element()

mismatch()

8. 集合算法(4)

set_union()        合并2個集合

set_intersection()    取交集

set_difference()       取第一個集合減去第二個集合

set_symmetric_difference()    取隻在一個集合中存在的元素集合

9. 堆算法(4)

make_heap()

pop_heap()

push_heap()

sort_heap()

繼續閱讀