c++函數庫中一些實用的函數


有一些程序,雖然寫起來不難,但是可能比較麻煩或容易出錯,這時就可以用c++函數庫里自帶的一些實用的函數。

這里只記錄一些不太常見的函數。

-------------------------------------!持續更新!-----------------------------------------------------

--------------------------------------正文分界線-------------------------------------------------------

 

1. __gcd(x, y)

求兩個數的最大公約數,如__gcd(6, 8) 就返回2。在 algorithm 庫中。是不是很方便?

 

2. reverse(a + 1, a + n + 1)

將數組中的元素反轉。a 是數組名,n是長度,跟 sort 的用法一樣。值得一提的是,對於字符型數組也同樣適用。也在 algorithm 庫中。

 

3. unique(a + 1, a + n + 1) 

去重函數。跟sort的用法一樣。不過他返回的值是最后一個數的地址,所以要得到新的數組長度應該這么寫: _n = unique(a + 1, a + n + 1) - a - 1.

 

4.lower_bound(a + 1, a + n + 1, x); upper_bound(a + 1, a + n + 1, x)

lower_bound是查找數組中第一個大於等於x的數,返回該地址,同理也是 pos = lower_bound(a + 1, a + n + 1, x) - a

upper_bound是查找第一個大於x的數,用法和lower_bound一樣

復雜度是二分的復雜度,O(logn)。(其實就是代替了手寫二分)

 

5.printf("%.3f M\n",(double)sizeof(a)/(1<<20));

這個其實不算函數,但是能輸出數組占用了多少內存,不用手算了~(a是數組名)。

 

6.fill(a + 1, a + n + 1, x)

將數組a中的每一個元素都賦成x,跟memset的區別是,memset是一個字節一個字節賦值,fill是一個元素一個元素賦值!(省掉一層for……)


免責聲明!

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



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