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 ",(double)sizeof(a)/(1<<20));

这个其实不算函数,但是能输出数组占用了多少内存,不用手算了~(a是数组名)。

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

将数组a中的每一个元素都赋成x,跟memset的区别是,memset是一个字节一个字节赋值,fill是一个元素一个元素赋值!(省掉一层for……)

原文地址:https://www.cnblogs.com/mrclr/p/8387228.html