【发布时间】:2012-08-17 21:44:15
【问题描述】:
#define getcx getchar_unlocked
inline void inp( int &n )//fast input function
{
n=0;
int ch=getcx();int sign=1;
while( ch < '0' || ch > '9' ){if(ch=='-')sign=-1; ch=getcx();}
while( ch >= '0' && ch <= '9' )
n = (n<<3)+(n<<1) + ch-'0', ch=getcx();
n=n*sign;
}
您好,我一直在各种编码竞赛中使用上述函数进行输入,但一直无法理解为什么它很快。我知道逻辑,但不知道它的牢度的概念。例如,这条线在做什么 "#define getcx getchar_unlocked" 。另外我不知道任何快速输出功能,所以也有任何快速输出功能
【问题讨论】:
-
这是关于此主题的另一个 SO 问题:stackoverflow.com/questions/9052757/…
-
正如函数名称所暗示的那样,它不是线程安全的,与此相比,使用同步机制的线程安全输入函数可能会产生显着的性能开销。
-
从可怕的 icky 代码格式来看,我猜它比正确编写的函数更快......因此它是“快”。
标签: c++ c coding-style operating-system