按是否修改容器中的內容和排序及相關操作,給標準庫中的演算法函式進行分類:
非修改性序列操作(
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 迭代器是乙個行為類似...