(轉)C++常用函數匯總


1.標准C++庫字符串類std::string的用法



begin       得到指向字符串開頭的Iterator

end       得到指向字符串結尾的Iterator

rbegin       得到指向反向字符串開頭的Iterator

rend       得到指向反向字符串結尾的Iterator

size       得到字符串的大小

length()       和size函數功能相同

max_size       字符串可能的最大大小

capacity       在不重新分配內存的情況下,字符串可能的大小

empty       判斷是否為空

operator[]       取第幾個元素,相當於數組

c_str       取得C風格的const char* 字符串

data       取得字符串內容地址

operator=       賦值操作符

reserve       預留空間

swap       交換函數

insert       插入字符

append       追加字符

push_back       追加字符

erase       刪除字符串

clear       清空字符容器中所有內容

resize       重新分配空間

assign       和賦值操作符一樣

replace       替代

copy       字符串到空間

find       查找,返回基於0的索引號

rfind       反向查找

find_first_of       查找包含子串中的任何字符,返回第一個位置

find_first_not_of       查找不包含子串中的任何字符,返回第一個位置

find_last_of       查找包含子串中的任何字符,返回最后一個位置

find_last_not_of       查找不包含子串中的任何字符,返回最后一個位置

substr(n1,len)       得到字符串從n1開始的長度為len的子串

比較字符串(支持所有的關系運算符)

compare       比較字符串

operator+       字符串鏈接

operator+=       += 操作符

operator==       判斷是否相等

operator!=       判斷是否不等於

operator<       判斷是否小於

operator>>       從輸入流中讀入字符串

operator<<       字符串寫入輸出流

getline       從輸入流中讀入一行

 

2.cctype庫

using ::isalpha; //是否字母

using ::iscntrl; //是否控制符

using ::isdigit; //是否是數字

using ::isgraph; //是否字母、數字或標點

using ::islower; //是否小寫

using ::isprint; //是否可打印字符

using ::ispunct; //是否標點

using ::isspace; //是否空格

using ::isupper; //是否大寫

using ::isxdigit; //是否十六進制數字

using ::tolower; //轉為小寫

using ::toupper; //轉為大寫

3 algorithm.庫

 

1)循環

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

for_each()

 

2)查找

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

 

find(a,a+

size,n)

返回b

當b=a+size

即沒找到,a為指針

 

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

find_if()

在序列中找出一子序列的最后一次出現的位置

find_end()

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

find_first_of()

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

adjacent_find()

計數

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

count()

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

count_if()

比較

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

mismatch()

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

在序列中找到等於某值的連續n次出現的位置

equal(a,a+n,b,cmp)

equal_range(a,a+n,x)

搜索

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

search()

在序列中找出一值的連續n次出現的位置

search_n()

 

修改性序列操作(27個)

復制

從序列的第一個元素起進行復制

copy()

從序列的最后一個元素起進行復制

copy_backward()

交換

交換兩個元素

swap()

交換指定范圍的元素

swap_ranges()

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

iter_swap()

變換

將某操作應用於指定范圍的每個元素

transform()

替換

用一個給定值替換一些值

replace()

替換滿足謂詞的一些元素

replace_if()

復制序列時用一給定值替換元素

replace_copy()

復制序列時替換滿足謂詞的元素

replace_copy_if()

填充

用一給定值取代所有元素

fill()

用一給定值取代前n個元素

fill_n()

生成

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

generate()

用一操作的結果取代前n個元素

generate_n()

刪除

刪除具有給定值的元素

remove()

刪除滿足謂詞的元素

remove_if()

復制序列時刪除具有給定值的元素

remove_copy()

復制序列時刪除滿足謂詞的元素

remove_copy_if()

唯一

刪除相鄰的重復元素

unique()

復制序列時刪除相鄰的重復元素

unique_copy()

反轉

反轉元素的次序

reverse(a,a+n)

復制序列時反轉元素的次序

reverse_copy()

環移

循環移動元素

rotate(a,a+m,a+n)

以m位置為界交換前后序列

復制序列時循環移動元素

rotate_copy()

隨機

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

random_shuffle()

划分

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

partition()

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

stable_partition()

 

序列排序及相關操作(27個)

排序

以很好的平均效率排序

sort(a,a+20,cmp)

bool cmp( int a,

 int b )

{ return a>b; }

在容器中或string用begin()

 

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

stable_sort()

將序列的前一部分排好序

partial_sort()

復制的同時將序列的前一部分排好序

partial_sort_copy()

第n個元素

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

nth_element()

二分檢索

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

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(a,a+n)

序列中的最大元素

max_element()

詞典比較

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

lexicographical_compare()

排列生成器

按字典序的下一個排列

next_permutation()

按字典序的前一個排列

prev_permutation()

         

 


4 cmath庫

using ::abs; //絕對值

using ::acos; //反余弦

using ::acosf; //反余弦

using ::acosl; //反余弦

using ::asin; //反正弦

using ::asinf; //反正弦

using ::asinl; //反正弦

using ::atan; //反正切

using ::atan2; //y/x的反正切

using ::atan2f; //y/x的反正切

using ::atan2l; //y/x的反正切

using ::atanf; //反正切

using ::atanl; //反正切

using ::ceil; //上取整

using ::ceilf; //上取整

using ::ceill; //上取整

using ::cos; //余弦

using ::cosf; //余弦

using ::cosh; //雙曲余弦

using ::coshf; //雙曲余弦

using ::coshl; //雙曲余弦

using ::cosl; //余弦

using ::exp; //指數值

using ::expf; //指數值

using ::expl; //指數值

using ::fabs; //絕對值

using ::fabsf; //絕對值

using ::fabsl; //絕對值

using ::floor; //下取整

using ::floorf; //下取整

using ::floorl; //下取整

using ::fmod; //求余

using ::fmodf; //求余

using ::fmodl; //求余

using ::frexp; //返回value=x*2n中x的值,n存貯在eptr中

using ::frexpf; //返回value=x*2n中x的值,n存貯在eptr中

using ::frexpl; //返回value=x*2n中x的值,n存貯在eptr中

using ::ldexp; //返回value*2exp的值

using ::ldexpf; //返回value*2exp的值

using ::ldexpl; //返回value*2exp的值

using ::log; //對數

using ::log10; //對數

using ::log10f; //對數

using ::log10l; //對數

using ::logf; //對數

using ::logl; //對數

using ::modf; //將雙精度數value分解成尾數和階

using ::modff; //將雙精度數value分解成尾數和階

using ::modfl; //將雙精度數value分解成尾數和階

using ::pow; //計算冪

using ::powf; //計算冪

using ::powl; //計算冪

using ::sin; //正弦

using ::sinf; //正弦

using ::sinh; //雙曲正弦

using ::sinhf; //雙曲正弦

using ::sinhl; //雙曲正弦

using ::sinl; //正弦

using ::sqrt; //開方

using ::sqrtf; //開方

using ::sqrtl; //開方

using ::tan; //正切

using ::tanf; //正切

using ::tanh; //雙曲正切

using ::tanhf; //雙曲正切

using ::tanhl; //雙曲正切

using ::tanl; //正切

5..cstdlib庫

double atof(const char *str);

把字符串str轉換成double類型。等價於:strtod(str, (char**)NULL)。

 

5.2 atoi

int atoi(const char *str);

把字符串str轉換成int類型。等價於:(int)strtol(str, (char**)NULL, 10)。

 

5.3 atol

long atol(const char *str);

把字符串str轉換成long類型。等價於:strtol(str, (char**)NULL, 10)。

 

5.4 strtod

double strtod(const char *start, char **end);

把字符串start的前綴轉換成double類型。在轉換中跳過start的前導空白符,然后逐個讀入構成數的字符,任何非浮點數成分的字符都會終止上述過程。如果end不為NULL,則把未轉換部分的指針保存在*end中。

如果結果上溢,返回帶有適當符號的HUGE_VAL,如果結果下溢,那么函數返回0。在這兩種情況下,errno均被置為ERANGE。

 

5.5 strtol

long int strtol(const char *start, char **end, int radix);

把字符串start的前綴轉換成long類型,在轉換中跳過start的前導空白符。如果end不為NULL,則把未轉換部分的指針保存在*end中。

如果radix的值在2到36間之間,那么轉換按該基數進行;如果radix為0,則基數為八進制、十進制、十六進制,以0為前導的是八進制,以0x或0X為前導的是十六進制。無論在哪種情況下,串中的字母是表示10到radix-1之間數字的字母。如果radix是16,可以加上前導0x或0X。

如果結果上溢,則依據結果的符號返回LONG_MAX或LONG_MIN,置errno為ERANGE。

 

5.6 strtoul

unsigned long int strtoul(const char *start, char **end, int radix);

與strtol()類似,只是結果為unsigned long類型,溢出時值為ULONG_MAX。

 

5.7 rand

int rand(void);

產生一個0到RAND_MAX之間的偽隨機整數。RAND_MAX值至少為32767。

 

5.8 srand

void srand(unsigned int seed);

設置新的偽隨機數序列的種子為seed。種子的初值為1。

 

5.9 calloc

void *calloc(size_t num, size_t size);

為num個大小為size的對象組成的數組分配足夠的內存,並返回指向所分配區域的第一個字節的指針;如果內存不足以滿足要求,則返回NULL。

分配的內存區域中的所有位被初始化為0。

 

5.10 malloc

void *malloc(size_t size);

為大小為size的對象分配足夠的內存,並返回指向所分配區域的第一個字節的指針;如果內存不足以滿足要求,則返回NULL。

不對分配的內存區域進行初始化。

 

5.11 realloc

void *realloc(void *ptr, size_t size);

將ptr指向的內存區域的大小改為size個字節。如果新分配的內存比原內存大,那么原內存的內容保持不變,增加的空間不進行初始化。如果新分配的內存比原內存小,那么新內存保持原內存區中前size字節的內容。函數返回指向新分配空間的指針。如果不能滿足要求,則返回NULL,原ptr指向的內存區域保持不變。

如果ptr為NULL,則行為等價於malloc(size)。

如果size為0,則行為等價於free(ptr)。

 

5.12 free

void free(void *ptr);

釋放ptr指向的內存空間,若ptr為NULL,則什么也不做。ptr必須指向先前用動態分配函數malloc、realloc或calloc分配的空間。

 

5.13 abort

void abort(void);

使程序非正常終止。其功能類似於raise(SIGABRT)。

 

5.14 exit

void exit(int status);

使程序正常終止。atexit函數以與注冊相反的順序被調用,所有打開的文件被刷新,所有打開的流被關閉。status的值如何被返回依具體的實現而定,但用0表示正常終止,也可用值EXIT_SUCCESS和EXIT_FAILURE。

 

5.15 atexit

int atexit(void (*func)(void));

注冊在程序正常終止時所要調用的函數func。如果成功注冊,則函數返回0值,否則返回非0值。

 

5.16 system

int system(const char *str);

把字符串str傳送給執行環境。如果str為NULL,那么在存在命令處理程序時,返回0值。如果str的值非NULL,則返回值與具體的實現有關。

 

5.17 getenv

char *getenv(const char *name);

返回與name相關的環境字符串。如果該字符串不存在,則返回NULL。其細節與具體的實現有關。

 

5.18 bsearch

void *bsearch(const void *key, const void *base, size_t n, size_t size,\

int (*compare)(const void *, const void *));

在base[0]...base[n-1]之間查找與*key匹配的項。size指出每個元素占有的字節數。函數返回一個指向匹配項的指針,若不存在匹配則返回NULL。

函數指針compare指向的函數把關鍵字key和數組元素比較,比較函數的形式為:

int func_name(const void *arg1, const void *arg2);

arg1是key指針,arg2是數組元素指針。

返回值必須如下:

arg1 < arg2時,返回值<0;

arg1 == arg2時,返回值==0;

arg1 > arg2時,返回值>0。

數組base必須按升序排列(與compare函數定義的大小次序一致)。

 

5.19 qsort

void qsort(void *base, size_t n, size_t size, \

int (*compare)(const void *, const void *));

對由n個大小為size的對象構成的數組base進行升序排序。

比較函數compare的形式如下:

int func_name(const void *arg1, const voie *arg2);

其返回值必須如下所示:

arg1 < arg2,返回值<0;

arg1 == arg2,返回值==0;

arg1 > arg2,返回值>0。

 

5.20 abs

int abs(int num);

返回int變元num的絕對值。

 

5.21 labs

long labs(long int num);

返回long類型變元num的絕對值。

 

5.22 div

div_t div(int numerator, int denominator);

返回numerator/denominator的商和余數,結果分別保存在結構類型div_t的兩個int成員quot和rem中。

 

5.23 ldiv

ldiv_t div(long int numerator, long int denominator);

返回numerator/denominator的商和余數,結果分別保存在結構類型ldiv_t的兩個long成員quot和rem中。

 

 

6.iomanip庫

dec 置基數為10 相當於"%d"

hex 置基數為16 相當於"%X"

oct 置基數為8 相當於"%o"

setfill( 'c' ) 設填充字符為c

setprecision( n ) 設顯示小數精度為n位

setw( n ) 設域寬為n個字符

這個控制符的意思是保證輸出寬度為n。如:

cout << setw( 3 ) << 1 << setw( 3 ) << 10 << setw( 3 ) << 100 << endl; 輸出結果為

1 10100 (默認是右對齊)當輸出長度大於3時(<<1000),setw(3)不起作用。

▲setw(n)用法: 通俗地講就是預設寬度

如 cout<<setw(5)<<255<<endl;

結果是:

(空格)(空格)255

▲setfill(char c) 用法 : 就是在預設寬度中如果已存在沒用完的寬度大小,則用設置的字符c填充

如 cout<<setfill(‘@‘)<<setw(5)<<255<<endl;

結果是:

@@255

▲setbase(int n) : 將數字轉換為 n 進制.

如 cout<<setbase(8)<<setw(5)<<255<<endl;

cout<<setbase(10)<<setw(5)<<255<<endl;

cout<<setbase(16)<<255<<endl;

結果是:

(空格)(空格)377

(空格)(空格) 255

(空格)(空格) f f

▲ setprecision用法

使用setprecision(n)可控制輸出流顯示浮點數的數字個數。C++默認的流輸出數值有效位是6。

如果setprecision(n)與setiosflags(ios::fixed)合用,可以控制小數點右邊的數字個數。setiosflags(ios::fixed)是用定點方式表示實數。

如果與setiosnags(ios::scientific)合用,可以控制指數表示法的小數位數。setiosflags(ios::scientific)是用指數方式表示實數。

setiosflags(ios::fixed) 固定的浮點顯示

setiosflags(ios::scientific) 指數表示

setiosflags(ios::left) 左對齊

setiosflags(ios::right) 右對齊

setiosflags(ios::skipws) 忽略前導空白

setiosflags(ios::uppercase) 16進制數大寫輸出

setiosflags(ios::lowercase) 16進制小寫輸出

setiosflags(ios::showpoint) 強制顯示小數點

setiosflags(ios::showpos) 強制顯示符號

7.numeric庫

accumulate(first ,last,n)求和,n為初始值;

adjacent_difference(first,last,result)求相鄰元素的差,后減前,result為差的序列在原序列開始的位置

checked_ adjacent_difference(first,last,result)

inner_product(first1,first2,last1,last2)將對應元素相乘並求出累計和

partial_sum(first,last,result)求到任意位置的累計和,result為和的序列在原序列開始的位置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM