快读快写
  • 板块学术版
  • 楼主ZZyangchengzhuo
  • 当前回复9
  • 已保存回复9
  • 发布时间2024/8/23 08:03
  • 上次更新2024/8/23 11:05:30
查看原帖
快读快写
1271395
ZZyangchengzhuo楼主2024/8/23 08:03

各位大佬,主要说一下快读和快写

第一段为快读,sign表示正负,需要注意的是x=0,因为在read()这个自定义函数中,已经经定义了参数x, 所以下面不需要再写一个int了。x=x10+c-'0'就是将数字累计的一个过程,最后将x=sign,将x变为正/负数

template <typename T> void read(T&x)
{
	x=0;
	int sign=1;
	char ch;
	do{ch=getchar();if(ch=='-') sign=-1;}while(!isdigit(ch));
	do{x=x*10+ch-'0';ch=getchar();} while(isdigit(ch));
	x*=sign;
}

下面一段为快写

inline void write(int x)
{
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}

inline是一个关键字用于声明内联函数,void表示函数的返回类型,而write()则是函数的名称

此上是快读与快写的代码

1.注意这种快读快写的方法只能使用于整数

举一个最简单个最基础的例子

#include<bits/stdc++.h>
using namespace std;
template <typename T> void read(T&x)
{
	x=0;
	int sign=1;
	char ch;
	do{ch=getchar();if(ch=='-') sign=-1;}while(!isdigit(ch));
	do{x=x*10+ch-'0';ch=getchar();} while(isdigit(ch));
	x*=sign;
}
inline void write(int x)
{
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
int main()
{
	
	int a,b;
	read(a),read(b);
	write(a+b);
	
	return 0;
}

这样加速了我们的代码的执行,提高了效率

对了,还有一点

ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);

快读快写与上面的代码,二选一即可

2024/8/23 08:03
加载中...