c STL演算法總結

2021-10-02 20:33:31 字數 4407 閱讀 6939

標頭檔案

功能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

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)

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堆...