STL演算法分類收藏

2021-04-24 21:46:22 字數 3025 閱讀 6829

按是否修改容器中的內容和排序及相關操作,給標準庫中的演算法函式進行分類:

非修改性序列操作

12個) 迴圈

for_each()

對序列中的每個元素執行某操作 查詢

find()

在序列中找出某個值的第一次出現的位置

find_if()

在序列中找出符合某謂詞的第乙個元素

find_end()

在序列中找出一子串行的最後一次出現的位置

find_first_of()

在序列中找出第一次出現指定值集中之值的位置

adjacent_find()

在序列中找出相鄰的一對值 計數

count()

在序列中統計某個值出現的次數

count_if()

在序列中統計與某謂詞匹配的次數 比較

mismatch()

找出兩個序列相異的第乙個元素

equal()

兩個序列中的對應元素都相同時為真 搜尋

search()

在序列中找出一子串行的第一次出現的位置

search_n()

在序列中找出一值的連續

n次出現的位置

修改性序列操作

27個) 複製

copy()

從序列的第乙個元素起進行複製

copy_backward()

從序列的最後乙個元素起進行複製 交換

swap()

交換兩個元素

swap_ranges()

交換指定範圍的元素

iter_swap()

交換由迭代器所指的兩個元素 變換

transform()

將某操作應用於指定範圍的每個元素 替換

replace()

用乙個給定值替換一些值

replace_if()

替換滿足謂詞的一些元素

replace_copy()

複製序列時用一給定值替換元素

replace_copy_if()

複製序列時替換滿足謂詞的元素 填充

fill()

用一給定值取代所有元素

fill_n()

用一給定值取代前

n個元素 生成

generate()

用一操作的結果取代所有元素

generate_n()

用一操作的結果取代前

n個元素 刪除

remove()

刪除具有給定值的元素

remove_if()

刪除滿足謂詞的元素

remove_copy()

複製序列時刪除具有給定值的元素

remove_copy_if()

複製序列時刪除滿足謂詞的元素 唯一

unique()

刪除相鄰的重複元素

unique_copy()

複製序列時刪除相鄰的重複元素 反轉

reverse()

反轉元素的次序

reverse_copy()

複製序列時反轉元素的次序 環移

rotate()

迴圈移動元素

rotate_copy()

複製序列時迴圈移動元素 隨機

random_shuffle()

採用均勻分布來隨機移動元素 劃分

partition()

將滿足某謂詞的元素都放到前面

stable_partition()

將滿足某謂詞的元素都放到前面並維持原順序

序列排序及相關操作

27個) 排序

sort()

以很好的平均效率排序

stable_sort()

排序,並維持相同元素的原有順序

partial_sort()

將序列的前一部分排好序

partial_sort_copy()

複製的同時將序列的前一部分排好序 第

n個元素

nth_element() 將第

n各元素放到它的正確位置

二分檢索

lower_bound()

找到大於等於某值的第一次出現

upper_bound()

找到大於某值的第一次出現

equal_range()

找到(在不破壞順序的前提下)可插入給定值的最大範圍

binary_search()

在有序序列中確定給定元素是否存在 歸併

merge()

歸併兩個有序序列

inplace_merge()

歸併兩個接續的有序序列

有序結構上的集合操作

includes()

一串行為另一串行的子串行時為真

set_union()

構造兩個集合的有序並集

set_intersection()

構造兩個集合的有序交集

set_difference()

構造兩個集合的有序差集

set_symmetric_difference()

構造兩個集合的有序對稱差集(並-交)

堆操作push_heap()

向堆中加入元素

pop_heap()

從堆中彈出元素

make_heap()

從序列構造堆

sort_heap()

給堆排序

最大和最小

min()

兩個值中較小的

max()

兩個值中較大的

min_element()

序列中的最小元素

max_element()

序列中的最大元素

詞典比較

lexicographical_compare()

兩個序列按字典序的第乙個在前

排列生成器

next_permutation()

按字典序的下乙個排列

prev_permutation()

按字典序的前乙個排列

STL演算法分類

stl 中,演算法就是函式模板。stl 中的演算法大多數是用來對容器進行操作的,如排序 查詢等。大部分演算法都是在標頭檔案 中定義的,還有些演算法用於數值處理,定義在標頭檔案 中。stl 中的演算法的分類方法。1 不變序列演算法。2 變值演算法。3 刪除演算法。4 變序演算法。5 排序演算法。6 有...

STL中的迭代器分類

五類迭代器如下 1 輸入迭代器 唯讀,一次傳遞 為輸入迭代器預定義實現只有istream iterator和istreambuf iterator,用於從乙個輸入流istream中讀取。乙個輸入迭代器僅能對它所選擇的每個元素進行一次解析,它們只能向前移動。乙個專門的建構函式定義了超越末尾的值。總是,...

STL 演算法細節

一 概論 1 質變演算法 會改變操作物件的值 2 非質變演算法 不改變操作物件的值 3 所有泛型演算法的前兩個引數都是一對迭代器 二 演算法的泛化過程 1 將乙個敘述完整的演算法轉化為程式 是任何訓練有素的程式設計師勝任愉快的工作。2 泛化是乙個漸進過程,從具體到抽象的過程。3 迭代器是乙個行為類似...