姓名: 张艺杨
赛道: 基础组
类型: 基础算法c++
【c++库函数大盘点】
关键词: 各种实用的库函数
本章节以函数需要使用的头文件分类
函数简介:
中文名:函数,外文名:function
c语言当中的库函数是为了提高编程效率
#include< algorithm>
1.count函数
用法:count(a.begin(),a.end(),key),是判断在a数组中是否存在key,是就返回1,否则返回0
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int>a={5,8,2,6,1,5,2,5,2};
int key=5;
if(count(a.begin(),a.end(),key)==1){
cout<<"YES";
}
return 0;
}
//输出YES
2.find函数
用法:find(a.begin(),a.end(),key),与count的功能一样,只不过,find是找到那个元素就返回,而count是要遍历整个数组
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int>a={5,8,2,6,1,5,2,5,2};
int key=5;
if(find(a.begin(),a.end(),key)==1){
cout<<"YES";
}
return 0;
}
//输出YES
3.reverse函数
用法:reverse(a.begin(),a.end()),从begin到end这段区间反转
示例:
#include<algorithm>
#include<iostream>
using namespace std;
int main(){
string str={"hi! algorithm"};
reverse(str.begin(),str.end());
for(int i=0;i<str.size();i++)cout<<str[i];
return 0;
}
//输出mhtirogla !ih
4.lower_bound函数
用法:lower_bound(begin,end,num)是在一个排好序的容器(vector/list/set)中进行二分查找,查找第一个>=num的数的地址,若使用lower_bound(begin,end,num)-数组名即可返回下标(下标从0开始)
示例:
#include<algorithm>
#include<iostream>
using namespace std;
int main(){
int arr[]={2,1,4,7,4,8,3,6,4,8};
cout<<lower_bound(arr,arr+8,3)-arr;
return 0;
}
//输出2
5. copy函数
用法copy(复制的begin,复制的end,粘贴的地方//从第几个元素)是把一个容器中的元素,复制到另一个数组的函数
示例:
#include<algorithm>
#include<iostream>
using namespace std;
int main(){
int arr[]={2,1,4,7,4,8,3,6,4,8};
int narr[10]={0};
copy(arr,arr+10,narr);
for(int i=0;i<10;i++)cout<<narr[i]<<" ";
return 0;
}
6.shuffle函数
用法:shuffle(begin,end,mt19937{random_device{}()})是把一个容器中的元素,随机打乱的函数(要额外加#include< random>)
示例:
#include<algorithm>
#include<iostream>
#include<random>
using namespace std;
int main(){
int arr[]={2,1,4,7,4,8,3,6,4,8};
shuffle(arr,arr+10,mt19937{random_device{}()});
for(int i=0;i<10;i++)cout<<arr[i]<<" ";
return 0;
}//输出,没人知道
#include< cmath>
1.sin函数
用法:sin(α),求α的正弦值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<sin(45);
return 0;
}
//输出0.851即sin(45)
2.cos函数
用法:cos(α),求α的余弦值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<cos(45);
return 0;
}
//输出0.525即cos(45)
3.tan函数
用法:tan(α),求α的正切值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<tan(45);
return 0;
}
//输出1.620即tan(45)
4.asin函数
用法:asin(α),求α的反正弦值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<asin(45);
return 0;
}
//输出0.000即arcsin(45)
5.acos函数
用法:acos(α),求α的反余弦值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<acos(-1);
return 0;
}
//输出3.142即arccos(-1)
6.atan函数
用法:atan(α),求α的反正切值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<atan(14);
return 0;
}
//输出1.499即arctan(14)
7.log10对数函数
用法:log10(α),求α以10为底的对数
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<log(10);
return 0;
}
//输出1即log(10)
8.log2对数函数
用法:log2(α),求α以2为底的对数
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<log2(1024);
return 0;
}
//输出10即log2(1024)
9.abs绝对值函数
用法:abs(α),求α的绝对值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<abs(-9);
return 0;
}
//输出9即abs(-9)
10.sqrt平方根函数
用法:sqrt(α),求α的平方根
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<sqrt(9);
return 0;
}
//输出3即sqrt(9)
11.pow乘方函数
用法:sqrt(a,b),求a的b次方
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<pow(2,3);
return 0;
}
//输出8即2的3次方
12.ceil函数a
用法:ceil(a),求a向上取整
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<ceil(2.23);
return 0;
}
//输出3即3向上取整
13.floor函数
用法:floor(a),求a向下取整
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<floor(2.23);
return 0;
}
//输出2即2向下取整
14.max最大值函数
用法:max(a,b),求a,b的最大值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<max(2,3);
return 0;
}
//输出3即2,3的最大值
15.min最小值函数
用法:min(a,b),求a,b的最小值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<min(2,3);
return 0;
}
//输出2即2,3的最小值
16.round四舍五入函数
用法:round(a),求a的四舍五入值
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<round(2.4)<<endl<<round(2.5);
return 0;
}
//输出2
// 3
17.swap函数
用法:swap(a,b),交换a,b
示例:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int a=1,b=2;
swap(a,b);
cout<<a<<" "<<b;
return 0;
}
//输出2 1
#include< cstring >
1.memset初始化函数
用法:memset(数组,x,长度),将数组赋值成x
2.strlen取字符串长度函数
用法:strlen(字符串)返回字符串长度
3.sizeof取数组长度函数
用法:sizeof(数组)返回数组长度
4.to_string
用法:to_string(数字)把数字转为字符串
5.stoi()(刚好与to_string功能相反)
用法:stoi(字符串)把字符串转为数字
其他cstring函数(部分)
include< climits>
1.值域函数
提到#include大家最先想到的想必是各个类型的最大最小值:
示例:
#include<climits>
#include<iostream>
using namespace std;
int main(){
cout<<LLONG_MAX<<" "<<LLONG_MIN;
return 0;
}
//输出9223372036854775807 -9223372036854775808
include< queue> and #include< stack >
此处就不一一讲解了
队列
插入数据:【队列名】.push(数据);
删除数据:【队列名】.pop();
显示队首元素:【队列名】.front();
显示队尾元素:【队列名】.back();
队列长度:【队列名】.size();
队列是否为空:【队列名】.empty()
栈
进栈:【栈名】.push(数据);
注意:操作栈时若有多个元素,则可以使用花括号扩住,也可以使用结构体
出栈:【栈名】.pop();//里面没参数!! !没有返回值(只是删除东西)
注意:空栈不可弹出
若需要返回值的出栈则用:【栈名】.top()//这里面没有参数,返回当前栈的栈顶
栈的栈元素的个数:【栈名】.size()//没有参数,返回当前栈元素的个数
判断当前栈是否为空:【栈名】.empty()//无参数,空返回true,非空返回flase