程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++ 頭文件系列 (algorithm)

C++ 頭文件系列 (algorithm)

編輯:關於C++

C++ 頭文件系列 (algorithm)。本站提示廣大學習愛好者:(C++ 頭文件系列 (algorithm))文章只能為提供參考,不一定能成為您想要的結果。以下是C++ 頭文件系列 (algorithm)正文


簡介

algorithm頭文件是C++的規范算法庫,它次要使用在容器上。 由於一切的算法都是經過迭代器停止操作的,所以算法的運算實踐上是和詳細的數據構造相別離的 ,也就是說,具有低耦合性。 因而,任何數據構造都能運用這套算法庫,只需它具有相應的迭代器類型。

算法類別

如上圖所示,庫中的算法次要分為4類:

  • 非修正性順序操作(Non-modifying sequence operations)
  • 可變順序操作(Mutating sequence operations)
  • 排序和關系操作(Sorting and related operations)
  • C庫算法(C library algorithms)
算法版本

用過這個算法庫的人都知道,外面的很多算法都是成對呈現的,一個概念的算法常常有多個版本:

  • in-place version: 普通版本,直接操作對迭代器停止操作。
  • copying version: 拷貝版本,需求傳入輸入迭代器作為拷貝的destination。 該版本普通帶有copy字樣。
  • predicate version: 謂詞版本,需求傳入謂詞作為判別的規范。 該版本普通帶有if字樣。
Non-modifying sequence operations
  • all_of : 判別能否范圍內的一切元素都滿足條件。
  • any_of : 判別能否范圍內的一切元素中有一個滿足條件。
  • none_of : 判別能否范圍內的一切元素中沒有一個滿足條件。
  • for_each : 對指定范圍內的每一個元素停止指定的操作。
  • find、find_if、find_if_not : 在指定范圍中查找滿足某個條件(值相等、條件滿足、條件不滿足)的元素。
  • find_end : 在指定序列中查找最後一個相等(或滿足謂詞條件)子序列。
  • find_first_of : 在指定序列中查找第一個呈現在另一個序列中(或滿足謂詞條件)的元素。
  • adjacent_find : 在指定序列中查找第一個相等(值相等、滿足條件)的元素對(2個元素)。
  • count、count_if : 對制定序列中的滿足條件(值相等、滿足條件)的元素停止計數。
  • mismatch : 給定兩個元素序列,前往第一個不婚配(值不相等、不滿足條件)的元素地位,以一個迭代器對指出。
  • equal : 判別兩個序列能否相等(值相等、滿足謂詞條件)。
  • is_permutation : 判別能否一個序列是另一個序列的陳列,即只要陳列方式不相等(值不相等、不滿足謂詞條件)。
  • search、search_n : 在給定序列中查找子序列或許n個反復的元素序列。
Mutating sequence operations
  • copy、copy_n、copy_if、copy_backward : 拷貝序列、拷貝序列中前n個元素、拷貝序列中滿足條件的、從後往前拷貝序列。
  • move、move_backward : 挪動序列、從後往前挪動序列(挪動後,任然可以對源序列停止操作,但元素值是未指定的)。
  • swap、iter_swap : 逐元素交流序列、交流兩個序列。
  • transform : 對一個 序列停止變換並輸入、對兩個序列停止變換並輸入(變換經過自定義謂詞來完成)。
  • replace、replace_if、replace_copy、replace_copy_if : 交換滿足條件(值相等、滿足謂詞條件)的元素為給定元素、交換滿足條件的元素並將其拷貝至別處。
  • fill、fill_n : 將給定序列元素填充為給定值、 將給定的前n個元素填充為給定值。
  • generate、generate_n : 用自定義的生成器生成元素,並將這些元素賦值給給定序列或前n個序列。
  • remove、remove_if : 移除相等或滿足謂詞條件的元素。 留意,若有元素被移除,指向這些元素之後的迭代器的可以運用,但後果是未指定的(unspecified)。
  • unique、unique_copy : 使序列獨一(即若有反復元素,保存第一個,其他全部移除)、是序列獨一並拷貝至目的地。
  • reverse、reverse_copy : 將給定序列逆轉、將給定序列逆轉並拷貝至目的地。
  • rotate、rotate_copy : 將給定序列左旋轉(middle - first)個元素、將給定序列左旋轉(middle - first)個元素並拷貝。
  • shuffle : 運用平均隨機數生成器將給定序列洗牌(即打亂,重新散布)。

上面幾個函數有關分區的同一方面,但又功用卻不想下面所列那麼類似,故而分開敘說:

  • is_partition : 用給定的一元謂詞判別給定序列能否被正確分區(即前一局部元素調用謂詞前往true,後一局部前往false)。
  • partition : 對給定序列停止分區操作。
  • stable_partition : 與partition操作類似,但是兩個group(即分區成的兩個分區)內元素的相關順序堅持不變(stable)。
  • partition_copy : 與partition類似,但是兩個分區group後果被拷貝到兩個指定的地位。
  • partition_point : 前往分區點,該點之前、該點之後(包括該點)辨別為兩個分區。
Sorting and related operations

這些函數都有兩個版本:運用operator < 的、運用函數子Compare的。

  • sort : 排序。
  • stable_sort : 波動排序。
  • partial_sort : 局部排序,關於給定的序列,只排序前middle - first個元素,並將它們放置在[first, middle)范圍中,剩余地位的元素順序為指定。
  • partial_sort_copy : paartial_sort函數的copy版本。
  • is_sorted、is_sorted_util : 判別給定序列能否為已排序(運用operator < 或 自定義函數子判別)的。
  • nth_element : 將nth迭代器指定的地位排序為後果元素。(實踐上應該是運用快排完成的)
  • lower_bound、upper_bound、equal_range : 前往下界、上界、相等性范圍。
  • binary_search : 在給定序列中對元素停止二分查找。
  • merge、inplace_merge : 兼並兩個序列並輸入。
  • includes : 判別能否一個序列重的一切元素都被包括在另一個序列中。
  • set_union : 並集。
  • set_intersection : 交集。
  • set_difference : 差集。
  • set_symmetric_difference : 對稱差集。
  • push_heap : 將一個元素push進由序列表示的heap中,並維持堆得性質。
  • pop_heap : 將一個元素從heap中pop(實踐上被交流到尾部)。
  • make_heap : 將給定序列結構成heap。
  • sort_heap : 對給定堆停止排序(能夠有特殊的算法對堆排序停止優化)。
  • is_heap、is_heap_util : 判別給定序列能否為堆、判別給定序列到哪個地位之前為堆。
  • min、max : 前往最小值、最大值。
  • minmax : 前往pair
  • min_element、max_element : 前往序列中第一個最小值、最大值。
  • minmax_element : 前往pair
  • lexicographical_compare : 對兩個序列停止字典序排序。
  • next_permutation、prev_permutation : 判別給定序列能否存在下一個或許上一個組合(一切能夠的陳列組合先由字典序排序,再停止判別)。
C library algorithms

該頭文件還包括了規范C頭文件stdlib.h,大體相反。 只是出於與C兼容的目的,bsearchqsort同時包括了C和C++的兩個函數簽名。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved