c algorithm標頭檔案下的常用函式

2021-10-19 21:43:40 字數 2172 閱讀 4731

使用algorithm標頭檔案,需要在標頭檔案下面加一行using namespace std;

max(x,y)和min(x,y)分別返回x和y中最大值和最小值,而且引數必須是兩個(可以是浮點數)。如果想要返回三個數x,y,z的最大值,可以使用max(x,max(y,z))的寫法。

abs(x)返回的絕對值。注意:x必須是整數,浮點型的絕對值請用math標頭檔案下的fabs。

**示例:

#include

#include

using

namespace std;

intmain()

輸出結果:

1 -2

1 2swap(x,y)用來交換x,y的值,示例如下

#include

#include

intmain()

輸出結果:

2 1經過自己摸索,我還發現了陣列也可以用這種方法交換,平時就不用再單獨寫個swap函式了,非常方便。示例如下:

#include

using

namespace std;

intmain()

;swap

(a[0

],a[1]

);printf

("%d %d"

,a[0

],a[1]

);}

輸出結果:

2 1revers(it,it2)可以將陣列指標在[it,it2)之間的元素或容器的迭代器在[it,it2)範圍內的元素進行反轉。示例如下:

#include

#include

intmain()

;reverse

(a,a+4)

;//將a[0]~a[3]反轉

for(

int i=

0;i<

6;i++

)return0;

}

輸出結果:

13 12 11 10 14 15

如果是對容器中的元素(例如string字串)進行反轉,結果也是一樣的:

#include

#include

#include

intmain()

return0;

}

輸出結果:

abfedcghi

next_permutation()給出乙個序列在全排列中的下乙個序列

#include

#include

intmain()

;//a[0]~a[2]之間的序列需要求解next_permutation

dowhile

(next_permutation

(a,a+3)

);return0;

}

輸出結果:

123132

213231

312321

在上述**中,使用迴圈是因為next_permutation在已經到達全排列的最後乙個時會返回false,這樣會方便退出迴圈。而使用do…while語句而不使用while語句是因為序列1 2 3本身也需要輸出,如果使用while會直接跳到下乙個序列再輸出,這樣結果會少乙個123

fill()可以把陣列或容器中的某一段區間賦值為某個相同的值。和memset不同,這裡的賦值可以是陣列型別對應範圍中的任意值。示例如下:

#include

#include

using

namespace std;

intmain()

;fill

(a,a+5,

233)

;//將a[0]~a[4]均賦值為233

for(

int i =

0;i<

5;i++

)return0;

}

輸出結果:

233 233 233 233 233

sort()可以說是最有意思,也是algorithm裡面最好刷題偷塔節省**量的乙個寶藏函式啦~~要單獨給sort()寫一篇。過兩天更新。

C algorithm標頭檔案下sort函式的使用

sort函式是用來排序的函式,它是根據具體的情況使用不同的排序方法,效率較高,一般來說,不推薦使用c語言中的qsort函式,原因是qsort函式使用起來比較麻煩,涉及到很多指標的操作,而且在sort函式在實現中規避了經典快速排序中可能出現的會導致實際複雜度退化到o n 2 的極端情況,所以我們在排序...

C algorithm 標頭檔案下的常用函式詳解

使用algorithm標頭檔案 max x,y 和min x,y 分別返回x和y中的最大值和最小值 abs x 返回x的絕對值,注意浮點型的絕對值請用math標頭檔案下的fabs函式 swap x,y 用來交換x和y的值 reverse it,it2 可以將陣列指標在 it,it2 之間的元素或容器...

Linux下的標頭檔案

1 linux中一些標頭檔案的作用 ansi c。提供斷言,assert 表示式 gcc。gtk,gnome的基礎庫,提供很多有用的函式,如有資料結構操作函式。使用glib只需要包含 gcc。資料夾操作函式。struct dirent,struct dir,opendir closedir read...