標頭檔案
功能algorithm
演算法函式
numeric
數值演算法
functiona
函式物件/仿函式
分類no.
分類說明解釋1
非可變序列演算法
non-modifying sequence operations
不直接修改容器內容的演算法。
2可變序列演算法
modifying sequence operations
可以修改容器內容的演算法。
3排序演算法
sorting/partitions/binary search/
對序列排序、合併、搜尋演算法操作。
4數值演算法
merge/heap/min/max
對容器內容進行數值計算。
**注意:**是容器的值和順序發生改變的演算法都是可變序列演算法
包括1:填充
2: 遍歷/變換
3:最大最小
4:排序演算法(12個):提供元素排序策略
1 排序
2 反轉/旋轉
3 隨機
5:查詢演算法(13個):判斷容器中是否包含某個值
1 統計
2 查詢
3 搜尋
4 邊界
6:刪除和替換演算法(15個)
1:複製
2:移除
3:替換
4:去重
5:交換
7:算術演算法(4個)
8:關係演算法(4個)
9:集合演算法(6個)
10:排列組合演算法(2個):提供計算給定集合按一定順序的所有可能排列組合
11:堆演算法(4個)
因為演算法函式太多 下面**中只有一部分使用 其餘部分可以看cpul
#include
#include
#include
#include
#include
using
namespace std;
void
func
(int n)
/*迭代器作為引數傳入
void my_for_each(beginit,)*/
intsquare
(int n)
intadd
(int a,
int b)
class
tset
intgetn()
const
//1:如果物件能夠自動比較和排序 需要新增operator<
bool
operator
<
(const tset& t)
const
friend ostream&
operator
<<
(ostream& os,
const tset& t)};
//2:可以使用定義比較函式處理
bool
compare
(const tset& a,
const tset& b)
void
tset_prin
(const tset& t)
bool
than5
(const tset& t)
tset addtset
(const tset& res,
const tset& b)
namespace ministl
template
<
classit,
class
func
>
intcount_if
(it first,it last,func pred)
}return res;
}template
<
classit,
class
func
>
it remove_if
(it first,it last,func pred)
++first;
}return res;
}template
<
classit,
classe,
class
func
>
e accumulate
(it first,it last,e init,func binary)
return res;}}
intmain()
; list<
int>
v(arr,arr+8)
;//填充
//1:fill fill_n;
//2: generate generate_n
//便歷 交換
//1:for_each
for_each
(v.begin()
,v.end()
,func)
; cout/2:transform
vector<
int>
res(v.
size()
);transform
(v.begin()
,v.end()
,res.
begin()
,square)
;for_each
(res.
begin()
,res.
end(
),func)
; cout
(v.begin()
,v.end()
,res.
begin()
,res.
begin()
,add)
;for_each
(res.
begin()
,res.
end(
),func)
; cout/最大 最小
//1: max(a,b)和max(a,b,cmp)
cout<<
max(5,
6)<; tset t1(5
),t2(
6); cout<<
max(t1,t2)
<; cout<<
max(t1,t2,compare)
/2:max_element和max_element(a,b,cmp)
vector v1;
v1.push_back
(t1)
; v1.
push_back
(t2)
; v1.
push_back
(tset(3
)); v1.
push_back
(tset(4
));;
cout<<
*max_element
(v1.
begin()
,v1.
end())
*max_element
(v1.
begin()
,v1.
end(
),compare)
/排序
sort
(v1.
begin()
,v1.
end(
),compare)
; ministl::
for_each
(v1.
begin()
,v1.
end(
),tset_prin)
; cout/查詢
////
//統計count 和count_if
cout
(v1.
begin()
,v1.
end(
),than5)
/刪除
//remove_if 不是真正的刪除 只是位置移動
vector
::iterator n=ministl::
remove_if
(v1.
begin()
,v1.
end(
),than5)
;//erase是真正的刪除
v1.erase
(n,v1.
end())
;for_each
(v1.
begin()
,v1.
end(
),tset_prin)
; cout/總數
tset t(0
);cout
(v1.
begin()
,v1.
end(
),t,addtset)
<}
C STL常用演算法總結
演算法 問題的求解步驟,以有限的步驟,解決數學或邏輯中的問題。accumulate 元素統計 template t accumulate inputiterator first,inputiterator last,t init template t accumulate inputiterator...
C STL之演算法引數總結
unarypred傳入乙個引數,返回bool值,不可改變序列元素的值。binarypred傳入兩個引數,返回bool值,不可改變序列元素的值。unaryop傳入乙個引數,返回void,可改變序列元素的值 傳入引用引數 binaryop傳入兩個引數,返回void,可改變序列元素的值 傳入引用引數 書上...
C STL使用總結
vector動態陣列 back 返回陣列最後乙個元素。宣告 vector res m,vector n,0 上面的一行宣告了乙個二維陣列m行n列的二維陣列,並且初始化為0 有乙個交換的函式reserve res.begin res.end 將res行交換 第一行變最後 第二行變倒數第二 stack堆...