1.int型转换为string型 :sprintf()
int num=456; char a[5]; sprintf(a , "%d" , int num); //将num转换成十进制然后逐位存入char型数组a中
%c 整数转成对应的 ASCII 字元
%d 整数转成十进位
%f 倍精确度数字转成浮点数
%o 整数转成八进位
%s 整数转成字符串
%x 整数转成小写十六进位
%X 整数转成大写十六进位
sscsnf()
char a[5] = "123"; int num; sscanf(a , "%d" , &num);//将char型数组转换成十进制int型num3.二分法查找:
这两个都必须将数组提前按照升序排好,当然降序也行,就是你把4看成大于2还是小于2的事了,说白了就是换个角度,下面的是按照升序来的
(lower_bound(a,a+n,int num)-a):在数组a中找到第一个大于等于num的数字并返回其下标
int a[6] = {1,2,3,4,5,6};
int num = 4;
cout << lower_bound(a,a+6,num)-a << endl;//输出3
(upper_bound(a,a+n,int num)-a):在数组a中找到第一个大于num的数字并返回其下标
int a[6] = {1,2,3,4,5,6};
int num = 4;
cout << upper_bound(a,a+6,num)-a << endl;//输出4
但这两个都是基于二分法查找的,要想准确,就要提前排序!!!
具体例子可以看看蓝桥杯2018年B组递增三元组这道题
4.返回string型输出从第几个到第几个字符substr(a,b):返回下标从a到b的字符串
string s = "asdfg"; cout << s.substr(1,2) << endl;//此时会输出sd5.排序:
sort(a, a+n,comepare):根据comepare确定数组a是升序还是降序,n是数组长度
bool comepare(int a,int b){
return ab,就是降序了
}
int main()
{
int num[] = {6,8,2,6};
sort(num,num+4,comepare);
//如果想要升序排列,可以不用谢comepare,因为升序是默认的
for(int i=0;i
6.得到数组中最大值和最小值:
max_element(),min_element():
这两个函数用来快速得到数组中的最大/小值和最大/小值下标
其中num是定义的数组名,6是数组num的长度,例如:
int num[6]={1,0,5,2,5,0};
cout << *max_element(num,num+6) << endl;
//则此时输出的是num数组的最大值5
int num[6]={1,0,5,2,5,0};
cout << max_element(num,num+6)-num << endl;
//则此时输出的是num数组的最大值的下标2
(注意:无论是max_element()或是min_element(),若数组中最大值为多个相同值时,只按照最先出现的最大值来输出。eg:这里的最大值下标是2而不是4)
min_element()和max_element()的应用方法相同
7.去重函数:
unique(data,data+n):将date数组去重,n是数组长度
注意:unique只是能对相邻元素去重,例如:
int main()
{
int date[6] = {2,3,3,6,2,5};
int n = unique(date,date+6)-date;
for(int i=0;i
这样就只能将相邻的3去重,而不相邻的2就不能实现去重,所以用这个函数之前还需要使用sort()进行排序才行,更重要的是所谓的去重并没有将重复的内容删去,而是把他们都排在了最后面
8.最大公约数和最小公倍数:
__gcd:这个函数来求最小公倍数,调用一个万能头文件,可以直接用,但有些就用不了,如果用不了参考第二个代码段
//可以直接引用型:
int main()
{
int gc = __gcd(4,8);
cout << gc << endl;
//输出最大公约数4
return 0;
}
//不可以直接引用型:
int gcd(int a,int b){
if(b==0) return a;
else
return gcd(b,a%b);
}
lcm:这个函数是需要自己定义的,来求最大公约数
int lcm(int a,int b){
return a/__gcd(a,b)*b;
}
9.交换函数:
swap(a,b):就是将a和b进行交换,不用再有一个中间变量了
注意:a和b是必须是同一类型
#include
using namespace std;
int main(){
int a=3,b=2;
swap(a,b);
cout << a << " " << b << endl;
//输出结果为:2 3
return 0;
}
10.排列组合
next_permutation(): 这是在STL中的
//int型数组:
#include
using namespace std;
int main(){
int num[3] = {5,2,6};
sort(num,num+3);
//先使用sort排个序,不排也行,就是看着有点乱
do{
for(int i=0;i<3;i++)
cout << num[i] << " ";
cout << endl;
}while(next_permutation(num,num+3));
}
//string型:
#include
using namespace std;
int main(){
string s;
cin >> s ;
sort(s.begin(),s.end());
//先使用sort排个序,不排也行,就是看着有点乱
do{
cout << s << endl;
}while(next_permutation(s.begin(),s.end()));
}



