如何给你的代码压行?

如果不会压行,你的代码看起来会是这样的:

1
2
3
4
5
6
7
8
9
10
int ml(vector<int> s, int n)
{
int m = s[0];
for (int i = 0; i <= n; i++)
{
if (s[i] > m)
m = s[i];
}
return m;
}

整整用了9行!
实际上其实根本不需用那么多行:

1
2
3
4
5
6
7
int ml(vector<int> s,int n){
int m=s[0];
for(int i=0;i<=n;i++){
if(s[i]>m)m=s[i];
}
return m;
}

当然也可以更短:

1
2
3
4
5
int ml(vector<int> s,int n){
int m=s[0];
for(int i=0;i<=n;i++) if(s[i]>m) m=s[i];
return m;
}

那么问题来了,怎么在不影响代码运行的情况下合理的压行呢?

判断类循环类的压行技巧

判断类

如果判断语句仅一行,可以考虑压行:

1
2
3
4
5
6
7
if(a==1) sum++;
else sum--;

//或者这样

if(a==1)
sum++;//可以通过缩进来方便区分

两句的话,压行可以考虑用大括号包起来压行前提是你觉得看着没影响

1
if(a==1) {sum++;a=2;}

注意在大括号里的每一句都是要加上封号的,因为这一段代码实际上等价于:

1
2
3
4
if(a==1){
sum++;
a=2;
}

循环类压行

也和判断的一样,可以这么压行:

1
2
3
4
5
6
for(int i=1;i<=n;i++) cout<<1<<endl;

//或者这样:

for(int i=1;i<=n;i++)
cout<<1<<endl;

如果是输出的话,其实可以这么写:

1
for(int i=1;i<=n;i++) cout<<i<<" "; cout<<endl;

因为C++cout<<endl;其实是在循环之外的,所以这么写是正确的

头文件压行

下面送给大家万能头文件:

1
#include<bits/stdc++.h>

其他技巧

1
2
3
4
5
6
#define ll long long
#define rep(1,n) for(int i=1;i<=(n);i++)
ll n;
int main(){
rep(1,n) cout<<"*"; cout<<endl;
}

通过define来减少代码长度,增加可读性

一些非常有用的C++自带函数

1
2
3
sort(a,a+n);//a为数组,n为a的大小
__gcd(x,y);//x,y的最大公约数
x=1<<n;//2的n次方