常用函数
文章目录
sort
用法
- sort(buf, buf + len); //数组起始地址,数组结束地址=起始地址==+数组长度==
- sort(buf, buf + len,cmp);//数组起始地址,数组结束地址
- sort(v.begin(),v.end());// 向量
example
bool cmp(int x, int y){
return x > y;// 降序
}
sort(buf, buf + 100, cmp);
最小公倍数和最大公约数
gcd
用法
__gcd(a,b)
注意两个-
原理
gcd(a,b)=gcd(b,a%b)
example
// 方式1 内置函数 _gcd(a,b)
cout<<__gcd(a,b)<<endl;
// 方式2
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
// 方式3
int gcd(int a,int b){
while(b!=0){
a = a%b;
swap(a,b);
}
return a;
}
lcm
原理
lcm(a,b)=a*b/gcd(a,b)
example
int lcm(int a,int b){
return a*b/__gcd(a,b);
}
reverse
用法
reverse(a + 1, a + n + 1)
:将数组中的元素反转。a 是数组名,n是长度,跟 sort 的用法一样。值得一提的是,对于字符型数组也同样适用。也在 algorithm 库中。
unique
用法
unique(a + 1, a + n + 1)
:去重函数。跟sort的用法一样。不过他返回的值是最后一个数的地址,所以要得到新的数组长度应该这么写: _n = unique(a + 1, a + n + 1) - a - 1.
accumulate
用法
int sum = accumulate(vec.begin() , vec.end() , 0);
accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
count
用法
count(ivec.begin() , ivec.end() , searchValue)
这个函数作用是统计在一定范围内某一值出现的次数
example
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, x;
cin >> n >> x;
stringstream ss;
for (n++; --n; ss << n); //把1-n的值都存放到字符串流中
string s = ss.str();
cout << count(s.begin(), s.end(), x + '0') << endl; //运用count函数直接出结果,简简单单
return 0;
}
fill
用法
- 用迭代器初始化
fill(begin(),end(),value);
- 一维数组初始化
fill(array,array+length,value);
- 二维数组初始化
fill(arr[0],arr[0]+m*n,value);
- 三维数组初始化
fill(arr[0][0],arr[0][0]+m*n*l,value);
example
int a[10];
fill(a,a+10,13);
for(int i=0;i<10;i++){
cout<<a[i]<<endl;
}
max min
用法
max(T a,T b);
max(T a,T b,comparator op);
min(T a,T b);
min(T a,T b,comparator op);
版权声明:本文为qq_43156279原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。