gpt4 book ai didi

c++ - 使用 putchar_unlocked 进行快速输出

转载 作者:可可西里 更新时间:2023-11-01 18:29:30 25 4
gpt4 key购买 nike

我希望在我的代码中使用快速输入和输出。我了解使用 getchar_unlocked 使用以下函数进行快速输入。

inline int next_int() {
int n = 0;
char c = getchar_unlocked();
while (!('0' <= c && c <= '9')) {
c = getchar_unlocked();
}
while ('0' <= c && c <= '9') {
n = n * 10 + c - '0';
c = getchar_unlocked();
}
return n;
}

有人可以向我解释如何使用 putchar_unlocked() 函数使用快速输出吗?

我正在浏览 this question并且有人说 putchar_unlocked() 可以用于快速输出。

最佳答案

下面的代码使用 putchar_unlocked() 可以很好地实现快速输出。

    #define pc(x) putchar_unlocked(x);
inline void writeInt (int n)
{
int N = n, rev, count = 0;
rev = N;
if (N == 0) { pc('0'); pc('\n'); return ;}
while ((rev % 10) == 0) { count++; rev /= 10;} //obtain the count of the number of 0s
rev = 0;
while (N != 0) { rev = (rev<<3) + (rev<<1) + N % 10; N /= 10;} //store reverse of N in rev
while (rev != 0) { pc(rev % 10 + '0'); rev /= 10;}
while (count--) pc('0');
}

通常 Printf 的输出速度相当快,但是对于写入 Integer 或 Long Outputs,下面的函数要快一点。
这里我们使用 putchar_unlocked() 方法来输出类似线程不安全的字符putchar() 的版本并且速度更快。

See Link.

关于c++ - 使用 putchar_unlocked 进行快速输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18006748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com