了解Getchar已解锁

用户3600483

我是竞争编程的新手,我发现许多人几乎在他们提交的每个提交中都使用以下代码段。

#define gc getchar_unlocked
int readint()

{
    int f=0,ret=0;
    char c=gc();
    while(c<'0'||c>'9')
        c=gc();
    while(c>='0'&&c<='9')
    {
        ret=ret*10+c-48;
        c=gc();
    }
    return f?-ret:ret;
}

该代码能否确保快速的I / O。在竞争性编程和其他应用程序中使用此逻辑的逻辑是什么?

ch

是的,在大多数情况下,此代码将比标准库实现更有效。它对输入进行了更多的假设,使其更加脆弱,但允许进行其他优化。这些假设是:数字始终为十进制,以单个非数字字符分隔,任何第二个分隔字符始终为负,数字始终足够小以适合int这些假设在编程竞赛中是可以接受的,但在大多数情况下,不应以其他方式使用。

getchar只是一个从缓冲输入中返回单个字符的函数。_unlocked是一个跳过同步并且可以更快的版本,但是如果有多个线程读取输入,将导致无法预料的行为。

通过自己进行缓冲并避免对每个字符进行库调用,可以使此代码更快。尽管这样做可能不值得。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查屏幕是否已解锁

来自分类Dev

检查屏幕是否已解锁

来自分类Dev

了解C语言中的getchar()和putchar()

来自分类Dev

首次使用后,LUKS分区已解锁

来自分类Dev

GNU屏幕已锁定,如何解锁?

来自分类Dev

硬盘空间已解锁?文件已删除?

来自分类Dev

在没有已知原因的情况下进行“紧急:同步:解锁已解锁的互斥锁”

来自分类Dev

尝试了解c中的循环和getchar()

来自分类Dev

在C语言的字符计数程序中了解getchar()

来自分类Dev

尝试了解c中的循环和getchar()

来自分类Dev

调用函数时,unique_lock是否已解锁?

来自分类Dev

如何检查引导加载程序是否已解锁

来自分类Dev

我无法引导至Sony Xperia S上的引导加载程序(已解锁且已植根)

来自分类Dev

如何了解已选择哪个UITableViewCell

来自分类Dev

chrome是否了解已编译的javascript?

来自分类Dev

Rethinkdb:了解哪些记录已更新

来自分类Dev

Sourcetree:了解分支是否已合并

来自分类Dev

Zumero同步:了解哪些表已更改

来自分类Dev

如何了解MySQL是否已更新或插入

来自分类Dev

Zumero同步:了解哪些表已更改

来自分类Dev

我想了解锁定在Linux中是如何工作的

来自分类Dev

getchar()和enter按钮了解其实际工作方式

来自分类Dev

Windows Phone 8开发人员已解锁但无法部署

来自分类Dev

在安全擦除期间无法解锁ATA安全性已锁定的硬盘驱动器

来自分类Dev

Access 2010表似乎已锁定并且无法修改?如何解锁?

来自分类Dev

PC无法识别已解锁的SGH-A847手机

来自分类Dev

如何在每次访问后强制iOS TouchID重新授权,或检查它是否已解锁?

来自分类Dev

解锁Windows 10会话仅发现它已重新启动

来自分类Dev

安装 Windows 的驱动器已锁定。解锁驱动器并重试

Related 相关文章

  1. 1

    检查屏幕是否已解锁

  2. 2

    检查屏幕是否已解锁

  3. 3

    了解C语言中的getchar()和putchar()

  4. 4

    首次使用后,LUKS分区已解锁

  5. 5

    GNU屏幕已锁定,如何解锁?

  6. 6

    硬盘空间已解锁?文件已删除?

  7. 7

    在没有已知原因的情况下进行“紧急:同步:解锁已解锁的互斥锁”

  8. 8

    尝试了解c中的循环和getchar()

  9. 9

    在C语言的字符计数程序中了解getchar()

  10. 10

    尝试了解c中的循环和getchar()

  11. 11

    调用函数时,unique_lock是否已解锁?

  12. 12

    如何检查引导加载程序是否已解锁

  13. 13

    我无法引导至Sony Xperia S上的引导加载程序(已解锁且已植根)

  14. 14

    如何了解已选择哪个UITableViewCell

  15. 15

    chrome是否了解已编译的javascript?

  16. 16

    Rethinkdb:了解哪些记录已更新

  17. 17

    Sourcetree:了解分支是否已合并

  18. 18

    Zumero同步:了解哪些表已更改

  19. 19

    如何了解MySQL是否已更新或插入

  20. 20

    Zumero同步:了解哪些表已更改

  21. 21

    我想了解锁定在Linux中是如何工作的

  22. 22

    getchar()和enter按钮了解其实际工作方式

  23. 23

    Windows Phone 8开发人员已解锁但无法部署

  24. 24

    在安全擦除期间无法解锁ATA安全性已锁定的硬盘驱动器

  25. 25

    Access 2010表似乎已锁定并且无法修改?如何解锁?

  26. 26

    PC无法识别已解锁的SGH-A847手机

  27. 27

    如何在每次访问后强制iOS TouchID重新授权,或检查它是否已解锁?

  28. 28

    解锁Windows 10会话仅发现它已重新启动

  29. 29

    安装 Windows 的驱动器已锁定。解锁驱动器并重试

热门标签

归档