快速输入和输出

写在前面

今天晚上闲来无事,就将各种类型的快读和快出写了出来(不会写浮点型);

读入int

比如int是节省时间最快的,超级快!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
inline int In_int()
{
int This=0,F=1; char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') F=-F;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
This=(This<<1)+(This<<3)+ch-'0';
ch=getchar();
}
return This;
}

读入char

其次就是char类型,节省时间一般般。

1
2
3
4
5
6
inline char In_char()
{
int ch=getchar();
while(ch<'A'||ch>'z') ch=getchar();
return ch;
}

读入string

然后就是cstring类型的,发现并没有多大提升,一样慢的要死。(可能我的用getchar没有办法进行特别强大的优化)

1
2
3
4
5
6
7
8
9
10
11
inline string In_string()
{
string s1; char ch=getchar();
while(ch<'!'||ch>'~') ch=getchar();
while(ch>='!'&&ch<='~')
{
s1+=ch;
ch=getchar();
}
return s1;
}

输出char:

1
2
3
4
5
inline void Put_char(char x)
{
putchar(x);
putchar('\n');
}

输出string:

1
2
3
4
5
inline void Put_string(string x)
{
for(int i=0;i<x.size();i++) putchar(x[i]);
putchar('\n');
}

输出int:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Put_int(int x)
{
int This=10,len=1;
while(This<=x)
{
This=(This<<1)+(This<<3);
len++;
}
while(len--)
{
This/=10;
putchar(x/This+'0');
x%=This;
}
}