快读 与 快写


今天是我在博客园的第一天,很想写篇文章!!!

能分享点什么呢?

1分钟过去了……

5分钟过去了……

15分钟过去了……

有了!就分享一下快读与快写吧!

1.实现目的

C++的cin与cout,由于要考虑多种类型,效率较低。

大部分比赛里的输入输出都是整数,能不能自己写一个read和write,让输入与输出的速度变快?

2.函数原型与使用方式

int read();

void write(int);

int num = read();

write(num);

3.实现方式

经“调查”,博主发现有两个函数:getchar()与putchar(),用于单个字符的输入输出。

read函数可以使用getchar()一位一位读入数字。

write函数可以使用putchar()一位一位输出数字。

4.代码

 1 #include 
 2 using namespace std;
 3 
 4 int read() {
 5     int res = 0;
 6     int flag = 0;
 7     char c = getchar(); // 判断符号 
 8     if (c == '-') { // 负数 
 9         flag = 1;
10         c = '0';
11     }
12     while (c >= '0' && c <= '9') {
13         res *= 10; // 腾出位置 
14         res += (c - '0'); // 把新数字“戴上” 
15         c = getchar();
16     }
17     return (flag == 1 ? -res : res);
18 }
19 
20 void write(int num) {
21     if (num == 0) { // 特殊情况 
22         putchar('0');
23         return;
24     }
25     if (num < 0) { // 负数 
26         putchar('-');
27         num = -num;
28     }
29     int arr[10];
30     int cnt = -1;
31     while (num) {
32         arr[++cnt] = num % 10; // 顺次压入栈,实现递归 
33         num /= 10; // 下一位 
34     }
35     while (cnt > -1) { // 还得考虑第一位! 
36         putchar('0' + arr[cnt--]);
37     }
38     return;
39 }
40 
41 int main() {
42     int a = read();
43     int b = read();
44     write(a); putchar(' ');
45     write(b); putchar('\n');
46     return 0;
47 }
Read Write Function

P.S. 此代码也可以作为模板使用!如要读入long long型整数,请稍微改一下代码!