使用algorithm头文件
1.max(x,y)返回最大值
min(x,y)返回最小值
abs(x)返回x的绝对值
#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
int x=1,y=-2;
printf("max=%d min=%d abs(y)=%d\n",max(x,y),min(x,y),abs(y));
return 0;
}
2.swap(x,y)交换x和y的值
int x=1,y=-2;
swap(x,y);
printf("x=%d y=%d\n",x,y);
3. reverse(a,b)将[a,b)内数据反转
int a[5]={1,2,3,4,5};
reverse(a,a+4);//将a[0]到a[3]反转
printf("反转后元素输出:\n");
for(int i=0;i<5;i++){
printf("%d ",a[i]);
}
4.next_permutation()给出一个序列在全排列中的下一个序列
int b[4]={1,2,3};
do{
printf("%d%d%d \n",b[0],b[1],b[2]);
}while(next_permutation(b,b+3));
5.fill()把数组或容器中的某一断区间赋为某个相同的值
int c[5]={1,2,3,4,5};
fill(c,c+5,233);
for(int i=0;i<5;i++){
printf("%d ",c[i]);
}
6.sort()默认从小到大排序,可使用比较函数cmp自定义排序规则。
bool cmp(int a,int b){
return a>b;
}
int d[6]={1,0,-3,4,9,2};
sort(d,d+6);
for(int i=0;i<6;i++){
printf("%d ",d[i]);
}
printf("\n从大到小排序:");
sort(d,d+6,cmp);
for(int i=0;i<6;i++){
printf("%d ",d[i]);
}
7.lower_bound(first,last,val)在范围内找第一个大于等于val的元素的位置
upper_bound(first,last,val)在范围内找第一个大于val的元素的位置
int f[10]={1,2,2,3,3,3,5,5,5,5};
int *lowerPos=lower_bound(f,f+10,-1);
int *upperPos=upper_bound(f,f+10,-1);
printf("寻找-1 lowerPos:%d upperPos:%d\n",lowerPos-f,upperPos-f);
//寻找1
lowerPos=lower_bound(f,f+10,1);
upperPos=upper_bound(f,f+10,1);
printf("寻找1 lowerPos:%d upperPos:%d\n",lowerPos-f,upperPos-f);
//寻找3
lowerPos=lower_bound(f,f+10,3);
upperPos=upper_bound(f,f+10,3);
printf("寻找3 lowerPos:%d upperPos:%d\n",lowerPos-f,upperPos-f);
//寻找6
lowerPos=lower_bound(f,f+10,6);
upperPos=upper_bound(f,f+10,6);
printf("寻找6 lowerPos:%d upperPos:%d\n",lowerPos-f,upperPos-f);
全部代码如下:
#include<stdio.h>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
int x=1,y=-2;
//最大值,最小值,绝对值
printf("max=%d min=%d abs(y)=%d\n",max(x,y),min(x,y),abs(y));
//交换
swap(x,y);
printf("交换后x=%d y=%d\n",x,y);
//reverse()将元素反转
int a[5]={1,2,3,4,5};
reverse(a,a+4);//将a[0]到a[3]反转
printf("反转后元素输出:\n");
for(int i=0;i<5;i++){
printf("%d ",a[i]);
}
//4.next_permutation()给出一个序列在全排列中的下一个序列
printf("1,2,3的全排列:\n");
int b[4]={1,2,3};
do{
printf("%d%d%d \n",b[0],b[1],b[2]);
}while(next_permutation(b,b+3));
//5.fill()把数组或容器中的某一断区间赋为某个相同的值
int c[5]={1,2,3,4,5};
fill(c,c+5,233);
for(int i=0;i<5;i++){
printf("%d ",c[i]);
}
printf("\n从小到大排序:");
//6.sort排序
int d[6]={1,0,-3,4,9,2};
sort(d,d+6);
for(int i=0;i<6;i++){
printf("%d ",d[i]);
}
printf("\n从大到小排序:");
sort(d,d+6,cmp);
for(int i=0;i<6;i++){
printf("%d ",d[i]);
}
//7.lower_bound()在范围内找第一个大于等于val的元素的位置
//upper_bound()在范围内找第一个大于val的元素的位置
printf("\n");
int f[10]={1,2,2,3,3,3,5,5,5,5};
int *lowerPos=lower_bound(f,f+10,-1);
int *upperPos=upper_bound(f,f+10,-1);
printf("寻找-1 lowerPos:%d upperPos:%d\n",lowerPos-f,upperPos-f);
//寻找1
lowerPos=lower_bound(f,f+10,1);
upperPos=upper_bound(f,f+10,1);
printf("寻找1 lowerPos:%d upperPos:%d\n",lowerPos-f,upperPos-f);
//寻找3
lowerPos=lower_bound(f,f+10,3);
upperPos=upper_bound(f,f+10,3);
printf("寻找3 lowerPos:%d upperPos:%d\n",lowerPos-f,upperPos-f);
//寻找6
lowerPos=lower_bound(f,f+10,6);
upperPos=upper_bound(f,f+10,6);
printf("寻找6 lowerPos:%d upperPos:%d\n",lowerPos-f,upperPos-f);
return 0;
}