天天看點

C++中的algorithm 的頭檔案

  C++中  #include<algorithm> 

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

非修改性順序操作(Non-modifying sequence operations)

可變順序操作(Mutating sequence operations)

排序和關系操作(Sorting and related operations)

C庫算法(C library algorithms)

1.非修改性順序操作(12個)

  1. 循環:對序列中的每個元素執行某操作 for_each() 
  2. 查找:在序列中找出某個值的第一次出現的位置 find() 利用底層元素的等于操作符,對範圍内的元   素與輸入的值進行比較。當比對時,結束搜尋,傳回該元素的一個 InputIterator 。
  3. 在序列中找出符合某謂詞的第一個元素 find_if()
  4. 在序列中找出一子序列的最後一次出現的位置 find_end()
  5. 在序列中找出第一次出現指定值集中之值的位置 find_first_of()
  6. 在序列中找出相鄰的一對值 adjacent_find() 
  7. 計數:在序列中統計某個值出現的次數 count()
  8. 在序列中統計與某謂詞比對的次數 count_if()
  9. 比較:找出兩個序列相異的第一個元素 mismatch()
  10. 兩個序列中的對應元素都相同時為真 equal() 
  11. 搜尋:在序列中找出一子序列的第一次出現的位置 search()
  12. 在序列中找出一值的連續n次出現的位置 search_n()

2.可變順序操作(27個)

  1. 複制:從序列的第一個元素起進行複制 copy()
  2. 從序列的最後一個元素起進行複制 copy_backward() 
  3. 交換:交換兩個元素 swap()
  4. 交換指定範圍的元素 swap_ranges()
  5. 交換由疊代器所指的兩個元素 iter_swap() 
  6. 變換:将某操作應用于指定範圍的每個元素 transform() 
  7. 替換:用一個給定值替換一些值 replace()
  8. 替換滿足謂詞的一些元素 replace_if()
  9. 複制序列時用一給定值替換元素 replace_copy()
  10. 複制序列時替換滿足謂詞的元素 replace_copy_if() 
  11. 填充:用一給定值取代所有元素 fill()
  12. 用一給定值取代前n個元素 fill_n()
  13. 生成:用一操作的結果取代所有元素 generate()
  14. 用一操作的結果取代前n個元素 generate_n() 
  15. 删除:删除具有給定值的元素 remove()
  16. 删除滿足謂詞的元素 remove_if()
  17. 複制序列時删除具有給定值的元素remove_copy()
  18. 複制序列時删除滿足謂詞的元素 remove_copy_if() 
  19. 唯一:删除相鄰的重複元素 unique()
  20. 複制序列時删除相鄰的重複元素 unique_copy() 
  21. 反轉:反轉元素的次序 reverse()
  22. 複制序列時反轉元素的次序 reverse_copy() 
  23. 環移;循環移動元素 rotate()
  24. 複制序列時循環移動元素 rotate_copy() 
  25. 随機:采用均勻分布來随機移動元素 random_shuffle()
  26. 劃分:将滿足某謂詞的元素都放到前面 partition()
  27. 将滿足某謂詞的元素都放到前面并維持原順序stable_partition()

3.排序和關系操作(27個)

  1. 排序:以很好的平均效率排序 sort()
  2. 排序,并維持相同元素的原有順序 stable_sort()
  3. 将序列的前一部分排好序partial_sort()
  4. 複制的同時将序列的前一部分排好序 partial_sort_copy() 
  5. 第n個元素 将第n各元素放到它的正确位置 nth_element() 
  6. 二分檢索 找到大于等于某值的第一次出現 lower_bound()
  7. 找到大于某值的第一次出現 upper_bound()
  8. 找到(在不破壞順序的前提下)可插入給定值的最大範圍 equal_range()
  9. 在有序序列中确定給定元素是否存在 binary_search() 
  10. 歸并:歸并兩個有序序列 merge()
  11. 歸并兩個接續的有序序列 inplace_merge() 
  12. 有序結構上的集合操作 一序列為另一序列的子序列時為真 includes()
  13. 構造兩個集合的有序并集 set_union()
  14. 構造兩個集合的有序交集 set_intersection()
  15. 構造兩個集合的有序差集 set_difference()
  16. 構造兩個集合的有序對稱差集(并-交) set_symmetric_difference() 
  17. 堆操作:向堆中加入元素 push_heap()
  18. 從堆中彈出元素 pop_heap()
  19. 從序列構造堆 make_heap()
  20. 給堆排序 sort_heap() 
  21. 最大和最小 兩個值中較小的 min()
  22. 兩個值中較大的 max()
  23. 序列中的最小元素 min_element()
  24. 序列中的最大元素 max_element() 
  25. 詞典比較 兩個序列按字典序的第一個在前 lexicographical_compare() 
  26. 排列生成器 按字典序的下一個排列 next_permutation()
  27. 按字典序的前一個排列 prev_permutation()

4.C庫算法

   該頭檔案還包含了标準C頭檔案stdlib.h,大體相同。 隻是出于與C相容的目的,bsearch 和 qsort同時包含了C和C++的兩個函數簽名.

————————————————

版權聲明:本文為CSDN部落客「oreofilling」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/qq_38251358/article/details/113105746

繼續閱讀