命名空間
變體
動作

演算法函式庫

出自 cppreference.com
< cpp
 
 
演算法函式庫
受約束的演算法與範圍演算法 (C++20)
受約束的演算法,例如 ranges::copyranges::sort...
執行策略 (C++17)
排序及相關操作
分割操作
排序操作
二分搜尋操作
(於已分割的範圍上)
集合操作 (針對已排序範圍)
合併操作 (於已排序的範圍上)
堆積操作
最小/最大操作
(C++11)
(C++17)
字典序比較操作
排列操作
C 函式庫
數值操作
未初始化記憶體上的操作
 

演算法函式庫定義了用於多種目的(如搜尋、排序、計數、操作)的函式,這些函式作用於元素範圍。請注意,範圍被定義為 [firstlast),其中 last 指向要檢查或修改的最後一個元素之後的位置。

目錄

[編輯] 受約束的演算法 (自 C++20 起)

C++20 在命名空間 std::ranges 中提供了大多數演算法的受約束版本。在這些演算法中,範圍可以被指定為一個迭代器-哨兵 (sentinel) 對,或者作為單個 range 引數,並且支援投影 (projections) 和指向成員指標的可呼叫對象。此外,大多數演算法的回傳型別已被更改,以回傳演算法執行期間計算出的所有潛在有用資訊。

std::vector<int> v{7, 1, 4, 0, -1};
std::ranges::sort(v); // constrained algorithm

[編輯] 執行策略 (自 C++17 起)

大多數演算法都有接受執行策略的重載版本。標準函式庫演算法支援多種執行策略,且函式庫提供了相應的執行策略型別與物件。使用者可以藉由呼叫平行演算法並傳入對應型別的執行策略物件,來靜態選擇執行策略。

標準函式庫的實作(而非使用者)可以定義額外的執行策略作為擴充。使用實作定義型別之執行策略物件呼叫的平行演算法,其語義由實作定義。

只要 std::is_trivially_copy_constructible_v<T>std::is_trivially_destructible_v<T> 皆為 true(其中 T 是元素的型別),演算法的平行版本(std::for_eachstd::for_each_n 除外)就被允許對範圍內的元素進行任意複製。

定義於標頭檔 <execution>
定義於命名空間 std::execution
執行策略型別
(類別) [編輯]
(C++17)(C++17)(C++17)(C++20)
全域執行策略物件
(常數) [編輯]
定義於命名空間 std
測試類別是否代表一個執行策略
(類別模板) [編輯]
功能測試巨集 數值 標準 功能
__cpp_lib_parallel_algorithm 201603L (C++17) 平行演算法
__cpp_lib_execution 201603L (C++17) 執行策略
201902L (C++20) std::execution::unsequenced_policy

[編輯] 不修改序列的操作

[編輯] 批次操作

定義於標頭檔 <algorithm>
將一元函式物件套用於範圍中的元素
(函式模板) [編輯]
將一元函式物件套用於範圍中的元素
(演算法函式物件)[編輯]
將函式物件套用於序列的前 N 個元素
(函式模板) [編輯]
將函式物件套用於序列的前 N 個元素
(演算法函式物件)[編輯]

[編輯] 搜尋操作

定義於標頭檔 <algorithm>
(C++11)(C++11)(C++11)
檢查謂詞對範圍中所有、任一或不滿足任何元素是否為 true
(函式模板) [編輯]
檢查謂詞對範圍中所有、任一或不滿足任何元素是否為 true
(演算法函式物件)[編輯]
檢查範圍是否包含給定的元素或子範圍
(演算法函式物件)[編輯]
尋找第一個滿足特定條件的元素
(函式模板) [編輯]
尋找第一個滿足特定條件的元素
(演算法函式物件)[編輯]
尋找最後一個滿足特定條件的元素
(演算法函式物件)[編輯]
在特定範圍中尋找最後一個元素序列
(函式模板) [編輯]
在特定範圍中尋找最後一個元素序列
(演算法函式物件)[編輯]
搜尋一組元素中的任何一個
(函式模板) [編輯]
搜尋一組元素中的任何一個
(演算法函式物件)[編輯]
尋找前兩個相等的(或滿足給定謂詞的)相鄰項
(函式模板) [編輯]
尋找前兩個相等的(或滿足給定謂詞的)相鄰項
(演算法函式物件)[編輯]
回傳滿足特定條件的元素數量
(函式模板) [編輯]
回傳滿足特定條件的元素數量
(演算法函式物件)[編輯]
尋找兩個範圍第一個不同之處
(函式模板) [編輯]
尋找兩個範圍第一個不同之處
(演算法函式物件)[編輯]
確定兩組元素是否相同
(函式模板) [編輯]
確定兩組元素是否相同
(演算法函式物件)[編輯]
搜尋某個元素範圍的第一次出現
(函式模板) [編輯]
搜尋某個元素範圍的第一次出現
(演算法函式物件)[編輯]
在範圍中搜尋第一個連續出現指定次數之某個元素的位置
(函式模板) [編輯]
在範圍中搜尋第一個連續出現指定次數之某個元素的位置
(演算法函式物件)[編輯]
檢查一個範圍是否以另一個範圍開始
(演算法函式物件)[編輯]
檢查一個範圍是否以另一個範圍結束
(演算法函式物件)[編輯]

[編輯] 折疊操作 (自 C++23 起)

定義於標頭檔 <algorithm>
對元素範圍進行左折疊 (left-folds)
(演算法函式物件)[編輯]
以第一個元素作為初始值,對元素範圍進行左折疊
(演算法函式物件)[編輯]
對元素範圍進行右折疊 (right-folds)
(演算法函式物件)[編輯]
以最後一個元素作為初始值,對元素範圍進行右折疊
(演算法函式物件)[編輯]
對元素範圍進行左折疊,並回傳一個 成對物件 (iterator, value)
(演算法函式物件)[編輯]
以第一個元素作為初始值對範圍進行左折疊,並回傳一個 成對物件 (iterator, optional)
(演算法函式物件)[編輯]

[編輯] 修改序列的操作

[編輯] 複製操作

定義於標頭檔 <algorithm>
將範圍內的元素複製到新位置
(函式模板) [編輯]
將範圍內的元素複製到新位置
(演算法函式物件)[編輯]
(C++11)
複製若干個元素到新位置
(函式模板) [編輯]
複製若干個元素到新位置
(演算法函式物件)[編輯]
按逆序複製範圍內的元素
(函式模板) [編輯]
按逆序複製範圍內的元素
(演算法函式物件)[編輯]
(C++11)
將範圍內的元素移動到新位置
(函式模板) [編輯]
將範圍內的元素移動到新位置
(演算法函式物件)[編輯]
按逆序將範圍內的元素移動到新位置
(函式模板) [編輯]
按逆序將範圍內的元素移動到新位置
(演算法函式物件)[編輯]

[編輯] 交換操作

定義於標頭檔 <algorithm>   (直到 C++11)
定義於標頭檔 <utility>     (自 C++11 起)
定義於標頭檔 <string_view>
交換兩個物件的值
(函式模板) [編輯]
定義於標頭檔 <algorithm>
交換兩個範圍的元素
(函式模板) [編輯]
交換兩個範圍的元素
(演算法函式物件)[編輯]
交換兩個迭代器所指向的元素
(函式模板) [編輯]

[編輯] 轉換操作

定義於標頭檔 <algorithm>
將函式套用於元素範圍,並將結果儲存在目標範圍內
(函式模板) [編輯]
對範圍內的元素套用一個函式
(演算法函式物件)[編輯]
將所有滿足特定條件的值替換為另一個值
(函式模板) [編輯]
將所有滿足特定條件的值替換為另一個值
(演算法函式物件)[編輯]
複製範圍,並將滿足特定條件的元素替換為另一個值
(函式模板) [編輯]
複製範圍,並將滿足特定條件的元素替換為另一個值
(演算法函式物件)[編輯]

[編輯] 生成操作

定義於標頭檔 <algorithm>
將給定值複製賦值給範圍內的每個元素
(函式模板) [編輯]
為範圍內的元素賦予特定值
(演算法函式物件)[編輯]
將給定值複製賦值給範圍內的前 N 個元素
(函式模板) [編輯]
為若干個元素賦予一個值
(演算法函式物件)[編輯]
將連續函式呼叫的結果賦值給範圍內的每個元素
(函式模板) [編輯]
將函式的結果儲存在範圍內
(演算法函式物件)[編輯]
將連續函式呼叫的結果賦值給範圍內的前 N 個元素
(函式模板) [編輯]
儲存 N 次函式呼叫的結果
(演算法函式物件)[編輯]

[編輯] 移除操作

定義於標頭檔 <algorithm>
移除滿足特定條件的元素
(函式模板) [編輯]
移除滿足特定條件的元素
(演算法函式物件)[編輯]
複製範圍內的元素,並省略滿足特定條件的元素
(函式模板) [編輯]
複製範圍內的元素,並省略滿足特定條件的元素
(演算法函式物件)[編輯]
移除範圍內連續重複的元素
(函式模板) [編輯]
移除範圍內連續重複的元素
(演算法函式物件)[編輯]
建立不包含連續重複元素的範圍副本
(函式模板) [編輯]
建立不包含連續重複元素的範圍副本
(演算法函式物件)[編輯]

[編輯] 改變順序的操作

定義於標頭檔 <algorithm>
反轉範圍內元素的順序
(函式模板) [編輯]
反轉範圍內元素的順序
(演算法函式物件)[編輯]
建立範圍的反轉副本
(函式模板) [編輯]
建立範圍的反轉副本
(演算法函式物件)[編輯]
旋轉範圍內元素的順序
(函式模板) [編輯]
旋轉範圍內元素的順序
(演算法函式物件)[編輯]
複製並旋轉元素範圍
(函式模板) [編輯]
複製並旋轉元素範圍
(演算法函式物件)[編輯]
平移範圍中的元素
(函式模板) [編輯]
平移範圍中的元素
(演算法函式物件)[編輯]
(直到 C++17)(C++11)
隨機重新排序範圍內的元素
(函式模板) [編輯]
隨機重新排序範圍內的元素
(演算法函式物件)[編輯]

[編輯] 取樣操作

定義於標頭檔 <algorithm>
(C++17)
從序列中隨機選取 N 個元素
(函式模板) [編輯]
從序列中隨機選取 N 個元素
(演算法函式物件)[編輯]

[編輯] 排序及相關操作

[編輯] 要求

某些演算法要求引數所表示的序列必須是「已排序」或「已分割」的。如果不滿足此要求,其行為是未定義的。

若對於指向序列的每個迭代器 iter 以及每個非負整數 n,只要 iter + n[1] 是指向序列中元素的有效迭代器,都有 comp(*(iter + n*iter== false[1],則該序列是相對於比較器 comp 為已排序的。

(直到 C++20)

若對於指向序列的每個迭代器 iter 以及每個非負整數 n,只要 iter + n[1] 是指向序列中元素的有效迭代器,bool(std::invoke(comp, std::invoke(proj, *(iter + n,
                       std::invoke(proj, *iter[1]false,則該序列是相對於比較器 comp 和投影 proj 為已排序的。

如果序列相對於比較器 compstd::identity{}(恆等投影)是已排序的,則稱該序列是相對於比較器 comp 為已排序的。

(自 C++20 起)

若存在一個整數 n,使得對於 [0std::distance(start, finish)) 內的所有 if(*(start + i[1]true 若且唯若 i < n,則序列 [startfinish)相對於運算式 f(e

  • 1.0 1.1 1.2 1.3 1.4 iter + n 僅表示「iter 被遞增 n 次後的結果」,無論 iter 是否為隨機存取迭代器。
  • [編輯] 分割操作

    定義於標頭檔 <algorithm>
    確定範圍是否已按給定謂詞分割
    (函式模板) [編輯]
    確定範圍是否已按給定謂詞分割
    (演算法函式物件)[編輯]
    將元素範圍分為兩組
    (函式模板) [編輯]
    將元素範圍分為兩組
    (演算法函式物件)[編輯]
    複製範圍並將元素分為兩組
    (函式模板) [編輯]
    複製範圍並將元素分為兩組
    (演算法函式物件)[編輯]
    在保持相對順序的同時將元素分為兩組
    (函式模板) [編輯]
    在保持相對順序的同時將元素分為兩組
    (演算法函式物件)[編輯]
    定位已分割範圍的分割點
    (函式模板) [編輯]
    定位已分割範圍的分割點
    (演算法函式物件)[編輯]

    [編輯] 排序操作

    定義於標頭檔 <algorithm>
    將範圍按升序排序
    (函式模板) [編輯]
    將範圍按升序排序
    (演算法函式物件)[編輯]
    對元素範圍進行排序,並保持相等元素之間的順序
    (函式模板) [編輯]
    對元素範圍進行排序,並保持相等元素之間的順序
    (演算法函式物件)[編輯]
    對範圍的前 N 個元素進行排序
    (函式模板) [編輯]
    對範圍的前 N 個元素進行排序
    (演算法函式物件)[編輯]
    複製並部分排序元素範圍
    (函式模板) [編輯]
    複製並部分排序元素範圍
    (演算法函式物件)[編輯]
    (C++11)
    檢查範圍是否按升序排序
    (函式模板) [編輯]
    檢查範圍是否按升序排序
    (演算法函式物件)[編輯]
    尋找最大的已排序子範圍
    (函式模板) [編輯]
    尋找最大的已排序子範圍
    (演算法函式物件)[編輯]
    部分排序給定範圍,確保其按給定元素分割
    (函式模板) [編輯]
    部分排序給定範圍,確保其按給定元素分割
    (演算法函式物件)[編輯]

    [編輯] 二分搜尋操作 (於已分割的範圍上)

    定義於標頭檔 <algorithm>
    回傳指向第一個不小於給定值之元素的迭代器
    (函式模板) [編輯]
    回傳指向第一個不小於給定值之元素的迭代器
    (演算法函式物件)[編輯]
    回傳指向第一個大於特定值之元素的迭代器
    (函式模板) [編輯]
    回傳指向第一個大於特定值之元素的迭代器
    (演算法函式物件)[編輯]
    回傳與特定鍵相匹配的元素範圍
    (函式模板) [編輯]
    回傳與特定鍵相匹配的元素範圍
    (演算法函式物件)[編輯]
    判斷某元素是否存在於一個部分排序的範圍中
    (函式模板) [編輯]
    判斷某元素是否存在於一個部分排序的範圍中
    (演算法函式物件)[編輯]

    [編輯] 集合操作 (於已排序的範圍上)

    定義於標頭檔 <algorithm>
    如果一個序列是另一個序列的子序列,則回傳 true
    (函式模板) [編輯]
    如果一個序列是另一個序列的子序列,則回傳 true
    (演算法函式物件)[編輯]
    計算兩個集合的聯集
    (函式模板) [編輯]
    計算兩個集合的聯集
    (演算法函式物件)[編輯]
    計算兩個集合的交集
    (函式模板) [編輯]
    計算兩個集合的交集
    (演算法函式物件)[編輯]
    計算兩個集合之間的差集
    (函式模板) [編輯]
    計算兩個集合之間的差集
    (演算法函式物件)[編輯]
    計算兩個集合的對稱差集
    (函式模板) [編輯]
    計算兩個集合的對稱差集
    (演算法函式物件)[編輯]

    [編輯] 合併操作 (於已排序的範圍上)

    定義於標頭檔 <algorithm>
    合併兩個已排序範圍
    (函式模板) [編輯]
    合併兩個已排序範圍
    (演算法函式物件)[編輯]
    原地合併兩個有序範圍
    (函式模板) [編輯]
    原地合併兩個有序範圍
    (演算法函式物件)[編輯]

    [編輯] 堆積 (Heap) 操作

    若對於 (0last - first) 內的所有整數 ibool(comp(first[(i - 1/ 2], first[i] 皆為 false,則隨機存取範圍 [firstlast) 是一個相對於比較器 comp 的堆積

    (直到 C++20)

    若對於 (0last - first) 內的所有整數 ibool(std::invoke(comp, std::invoke(proj, first[(i - 1/ 2]                       std::invoke(proj, first[i] 皆為 false,則隨機存取範圍 [firstlast) 是一個相對於比較器 comp 和投影 proj 的堆積

    如果範圍相對於比較器 compstd::identity{}(恆等投影)是堆積,則稱該隨機存取範圍為一個相對於比較器 comp 的堆積

    (自 C++20 起)

    堆積可以透過 std::make_heapranges::make_heap(自 C++20 起) 來建立。

    關於堆積的更多性質,請參閱 最大堆積 (max heap)


    定義於標頭檔 <algorithm>
    將元素加入最大堆積
    (函式模板) [編輯]
    將元素加入最大堆積
    (演算法函式物件)[編輯]
    從最大堆積中移除最大的元素
    (函式模板) [編輯]
    從最大堆積中移除最大的元素
    (演算法函式物件)[編輯]
    從元素範圍中建立一個最大堆積
    (函式模板) [編輯]
    從元素範圍中建立一個最大堆積
    (演算法函式物件)[編輯]
    將最大堆積轉換為按升序排序的元素範圍
    (函式模板) [編輯]
    將最大堆積轉換為按升序排序的元素範圍
    (演算法函式物件)[編輯]
    (C++11)
    檢查給定範圍是否為最大堆積 (max heap)
    (函式模板) [編輯]
    檢查給定範圍是否為最大堆積 (max heap)
    (演算法函式物件)[編輯]
    尋找最大的最大堆積子範圍
    (函式模板) [編輯]
    尋找最大的最大堆積子範圍
    (演算法函式物件)[編輯]

    [編輯] 最小值/最大值操作

    定義於標頭檔 <algorithm>
    回傳給定值中的較大者
    (函式模板) [編輯]
    回傳給定值中的較大者
    (演算法函式物件)[編輯]
    回傳範圍內最大的元素
    (函式模板) [編輯]
    回傳範圍內最大的元素
    (演算法函式物件)[編輯]
    回傳給定值中的較小者
    (函式模板) [編輯]
    回傳給定值中的較小者
    (演算法函式物件)[編輯]
    回傳範圍中的最小元素
    (函式模板) [編輯]
    回傳範圍中的最小元素
    (演算法函式物件)[編輯]
    (C++11)
    回傳兩個元素中的較小值與較大值
    (函式模板) [編輯]
    回傳兩個元素中的較小值與較大值
    (演算法函式物件)[編輯]
    回傳範圍中的最小與最大元素
    (函式模板) [編輯]
    回傳範圍中的最小與最大元素
    (演算法函式物件)[編輯]
    (C++17)
    將一個值限制在兩邊界值之間
    (函式模板) [編輯]
    將一個值限制在兩邊界值之間
    (演算法函式物件)[編輯]

    [編輯] 字典序比較操作

    定義於標頭檔 <algorithm>
    如果一個範圍在字典序上小於另一個,則回傳 true
    (函式模板) [編輯]
    如果一個範圍在字典序上小於另一個,則回傳 true
    (演算法函式物件)[編輯]
    使用三路比較 (three-way comparison) 比較兩個範圍
    (函式模板) [編輯]

    [編輯] 排列操作

    定義於標頭檔 <algorithm>
    產生範圍內元素的下一個字典序較大的排列
    (函式模板) [編輯]
    產生範圍內元素的下一個字典序較大的排列
    (演算法函式物件)[編輯]
    產生範圍內元素的下一個字典序較小的排列
    (函式模板) [編輯]
    產生範圍內元素的下一個字典序較小的排列
    (演算法函式物件)[編輯]
    判斷一個序列是否為另一個序列的排列
    (函式模板) [編輯]
    判斷一個序列是否為另一個序列的排列
    (演算法函式物件)[編輯]

    [編輯] 數值操作

    定義於標頭檔 <numeric>
    (C++11)
    用起始值的連續遞增值填滿一個範圍
    (函式模板) [編輯]
    用起始值的連續遞增值填滿一個範圍
    (演算法函式物件)[編輯]
    對元素範圍進行加總或折疊
    (函式模板) [編輯]
    計算兩個元素範圍的內積
    (函式模板) [編輯]
    計算範圍中相鄰元素之間的差值
    (函式模板) [編輯]
    計算元素範圍的部分和 (partial sum)
    (函式模板) [編輯]
    (C++17)
    類似於 std::accumulate,但計算順序不固定
    (函式模板) [編輯]
    類似於 std::partial_sum,但在第 i 個和中排除第 i 個輸入元素
    (函式模板) [編輯]
    類似於 std::partial_sum,且在第 i 個和中包含第 i 個輸入元素
    (函式模板) [編輯]
    套用可呼叫對象後,再以不固定順序進行歸約 (reduce)
    (函式模板) [編輯]
    套用可呼叫對象後,計算不包含目前的掃描 (exclusive scan)
    (函式模板) [編輯]
    套用可呼叫對象後,計算包含目前的掃描 (inclusive scan)
    (函式模板) [編輯]

    [編輯] 在未初始化記憶體上的操作

    定義於標頭檔 <memory>
    將物件範圍複製到未初始化的記憶體區域
    (函式模板) [編輯]
    將物件範圍複製到未初始化的記憶體區域
    (演算法函式物件)[編輯]
    將一定數量的物件複製到未初始化的記憶體區域
    (函式模板) [編輯]
    將一定數量的物件複製到未初始化的記憶體區域
    (演算法函式物件)[編輯]
    將一個物件複製到由範圍定義的未初始化記憶體區域
    (函式模板) [編輯]
    將一個物件複製到由範圍定義的未初始化記憶體區域
    (演算法函式物件)[編輯]
    將一個物件複製到由起始點和計數定義的未初始化記憶體區域
    (函式模板) [編輯]
    將一個物件複製到由起始點和計數定義的未初始化記憶體區域
    (演算法函式物件)[編輯]
    將物件範圍移動到未初始化的記憶體區域
    (函式模板) [編輯]
    將物件範圍移動到未初始化的記憶體區域
    (演算法函式物件)[編輯]
    將一定數量的物件移動到未初始化的記憶體區域
    (函式模板) [編輯]
    將一定數量的物件移動到未初始化的記憶體區域
    (演算法函式物件)[編輯]
    透過預設初始化 (default-initialization) 在由範圍定義的未初始化記憶體區域中建構物件
    (函式模板) [編輯]
    透過預設初始化 (default-initialization) 在由範圍定義的未初始化記憶體區域中建構物件
    (演算法函式物件)[編輯]
    透過預設初始化 (default-initialization) 在由起始點和計數定義的未初始化記憶體區域中建構物件
    (函式模板) [編輯]
    透過預設初始化 (default-initialization) 在由起始點和計數定義的未初始化記憶體區域中建構物件
    (演算法函式物件)[編輯]
    透過值初始化 (value-initialization) 在由範圍定義的未初始化記憶體區域中建構物件
    (函式模板) [編輯]
    透過值初始化 (value-initialization) 在由範圍定義的未初始化記憶體區域中建構物件
    (演算法函式物件)[編輯]
    透過值初始化 (value-initialization) 在由起始點和計數定義的未初始化記憶體區域中建構物件
    (函式模板) [編輯]
    透過值初始化 (value-initialization) 在由起始點和計數定義的未初始化記憶體區域中建構物件
    (演算法函式物件)[編輯]
    (C++17)
    銷毀一個物件範圍
    (函式模板) [編輯]
    銷毀一個物件範圍
    (演算法函式物件)[編輯]
    (C++17)
    銷毀範圍內的一定數量的物件
    (函式模板) [編輯]
    銷毀範圍內的一定數量的物件
    (演算法函式物件)[編輯]
    銷毀位於給定地址的物件
    (函式模板) [編輯]
    銷毀位於給定地址的物件
    (演算法函式物件)[編輯]
    在給定地址建立物件
    (函式模板) [編輯]
    在給定地址建立物件
    (演算法函式物件)[編輯]

    [編輯] 隨機數生成 (自 C++26 起)

    定義於標頭檔 <random>
    使用均勻隨機位元產生器生成的隨機數填充範圍
    (演算法函式物件)[編輯]

    [編輯] 註解

    功能測試巨集 數值 標準 功能
    __cpp_lib_algorithm_iterator_requirements 202207L (C++23) Ranges 迭代器作為非 Ranges 演算法的輸入
    __cpp_lib_clamp 201603L (C++17) std::clamp
    __cpp_lib_constexpr_algorithms 201806L (C++20) 演算法的 constexpr 支援
    202306L (C++26) Constexpr 穩定排序
    __cpp_lib_algorithm_default_value_type 202403L (C++26) 列表初始化 (List-initialization) 用於演算法
    __cpp_lib_freestanding_algorithm 202311L (C++26) <algorithm> 中的獨立實作 (freestanding) 設施
    __cpp_lib_robust_nonmodifying_seq_ops 201304L (C++14) 使非修改性序列操作更穩健(為 std::mismatchstd::equalstd::is_permutation 提供雙範圍多載)
    __cpp_lib_sample 201603L (C++17) std::sample
    __cpp_lib_shift 201806L (C++20) std::shift_leftstd::shift_right

    [編輯] C 標準函式庫

    定義於標頭檔 <cstdlib>
    對未指定類型的元素範圍進行排序
    (函式) [編輯]
    在陣列中搜尋未指定類型的元素
    (函式) [編輯]

    [編輯] 缺陷報告

    下列更改行為的缺陷報告追溯應用於之前的 C++ 標準。

    DR 應用於 出版時的行為 正確的行為
    LWG 193 C++98 堆積 (heap) 要求 *first 為最大元素 可以存在
    等於 *first 的元素
    LWG 2150 C++98 已排序序列的定義不正確 已修正
    LWG 2166 C++98 堆積需求與
    最大堆積 (max heap) 的定義不夠匹配
    需求已改進

    [編輯] 參閱

    關於 演算法C 文件
    English Deutsch 日本語 中文(简体) 中文(繁體)