快速输入输出功能

2024-02-14

#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" 。另外我不知道任何快速输出功能,所以也有任何快速输出功能


getchar_unlocked() http://linux.about.com/library/cmd/blcmdl3_getchar_unlocked.htm是线程unsafe的版本getchar()原因是getchar_unlocked() seems更快的是它不会检查输入流上应该获取字符的任何锁定。因此,如果另一个线程锁定了输入流,则该线程应该等到锁计数为零 http://linux.about.com/library/cmd/blcmdl3_flockfile.htm。但这个函数并不关心它,从而破坏了线程之间的同步。

但如果您确定缺乏同步不会对您造成伤害,那么此功能可能会帮助您更快一点。

另外,其advised http://www.qnx.com/developers/docs/6.5.0/index.jsp?topic=/com.qnx.doc.neutrino_lib_ref/g/getchar_unlocked.html仅当调用线程已使用以下命令锁定 stdin 时,您才能安全地使用它羊群文件() http://linux.about.com/library/cmd/blcmdl3_flockfile.htm (or ftrylockfile()).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速输入输出功能 的相关文章

随机推荐

  • 获取具有任何签名的任何方法的 MethodInfo(任何签名的委托)

    我想编写一个方法 该方法将分析任何方法 具有任意数量的参数和任何返回类型 的自定义属性 仅了解方法信息 该函数将检查方法是否具有特定属性 像这样 var tmp methodInfo GetCustomAttributes typeof L
  • 在没有 C 运行时的情况下使用 64 位整数 - 链接错误 __alldiv

    我正在尝试在不使用 C 运行时 msvcrt 或 libcmt 的情况下构建 Windows 控制台应用程序 也就是说 仅链接 kernel32 lib 并使用 WIN32 API 中的控制台函数而不是 printf 等 我的问题是 在链接
  • 如何设置 ACL 以允许每个人列出 REST API 中的所有用户

    我尝试使用 REST API 列出我的 Loopback 2 0 应用程序中的所有用户 但收到以下错误 error name Error status 401 message Authorization Required statusCod
  • 是否可以在 Ruby 中执行 before_action(就像在 Rails 中一样)?

    是否可以致电before action在某些指定的方法之前 比如在 Rails 中 class Calculator before action raise Exception calculator is empty if numbers
  • 在 ubuntu 18.04 中卸载 php 7

    我有一台服务器 其中有一个使用 PHP 5 6 运行的应用程序 但我将服务器从 Ubuntu 14 04 升级到 18 04 在此过程中我还将 PHP 升级到 7 2 现在我正在尝试卸载它 但我发现很难 我已经运行命令 sudo apt g
  • 使用外部数据的 D3 条形图

    我使用 d3 js v4 制作了一个条形图 我尝试使用外部数据文件 tsv 文件 它给出了以下错误 错误 属性高度 预期长度 NaN 匿名 d3 min js 2 o d3 min js 2 yn d3 min js 2 mn d3 min
  • listview 没有在带有 viewpager 选项卡的片段中刷新

    我遇到了在 viewpager 样式选项卡内使用 listview 和片段的问题 该选项卡在 github 上的 jakewharton s Android ViewPagerIndicator 示例中给出 我对三个选项卡使用相同的库 每个
  • 我什么时候应该在 WPF 中使用依赖属性?

    我什么时候应该在 WPF 中使用依赖属性 它们是静态的 因此与使用 NET 属性相比 我们可以节省大量内存 相对于 NET 属性使用依赖属性的其他好处包括 1 无需检查线程访问 2 提示渲染包含元素 ETC 所以看来我应该始终在使用 WPF
  • OpenCL clBuildProgram 缓存源代码,如果 #include 源代码发生更改,则不会重新编译

    我用opencl实现了一个项目 我有一个包含内核函数的文件 内核使用的函数包含在单独的头文件中 但是当我更改包含的文件时 有时会应用更改 有时则不会 这让我很困惑应用程序是否有错误 我检查了 stackoverflow 中的其他帖子 发现
  • 虚假 Ajax 请求

    为了检查ajax请求的提交情况 当用户提交表单时 我使用jasmine 1 实现了以下测试 测试已成功通过 但查看 javascript 控制台时出现以下错误500 Internal Server Error 由于我不关心服务器响应 所以我
  • 以集群模式在同一物理节点上运行 Storm nimbus 和supervisor

    我现在有一个包含 2 个物理节点的 Storm 集群 我在跑storm nimbus在节点 1 上和storm supervisor在节点 2 上 看起来我的所有拓扑都仅在节点 2 管理节点 上运行 我也应该在节点 1 上运行主管吗 Tha
  • 如何使用 for_each 删除 STL 映射中的每个值?

    假设我有一个 STL 映射 其中的值是指针 并且我想将它们全部删除 我如何表示以下代码 但使用 std for each 我很高兴找到使用 Boost 的解决方案 for stdext hash map
  • 管理器中缺少应用程序图标

    我最近迁移了我的应用程序以支持 iOS7 并在此过程中更新了我的应用程序图标以使用资产目录 这一切在应用程序中都运行良好 但是 在 Organizer 和 TestFlight 中 我的应用程序图标丢失了 同样的情况也发生在 TestFli
  • Google Maps API v3 向每个标记添加信息窗口

    注意 我使用的是 Google Maps API v3 我正在尝试为我在地图上放置的每个标记添加一个信息窗口 目前我正在使用以下代码执行此操作 for var i in tracks racer id data points values
  • 从 SJSIR “手动”构建 JS

    我需要在运行时从 sjsir 文件构建一个 js 文件来实现插件系统 这样就无法在编译时与我的其余编译一起完成 我曾经在 0 6 3 中使用以下代码实现相同的过程 但它似乎已被弃用 您建议使用什么算法来实现与 0 6 13 相同的操作 谢谢
  • 更改博客主题(blogdown+netlify)

    我按照 Yihui 的教程并使用创建了一个网站blowdown github and netlify 现在 我想更改我的网站的主题 问题是我有几篇文章产生了很多情节 因此 当我在本地创建一个新网站并添加我的帖子时 git push失败 我怀
  • Xcode 12 Beta - 找不到模拟器运行时

    我已经安装了 Xcode 12 beta 2 我尝试通过 Mac OS Catalina 上的 Jenkins 运行我们的 xamarin 项目 它失败并出现以下错误 当我从 Mac Visual studio 构建相同的项目时 它成功了
  • 有没有办法在网页开发中使用加色混合?

    我有一个可以使用的网页设计加法混色 http en wikipedia org wiki Additive color 想要的效果是 红色方块覆盖绿色方块 重叠区域呈现黄色 有没有什么好方法可以使用标准工具 CSS CSS 透明度 不透明度
  • 内联块+最小/最大宽度行为

    我在许多浏览器 FF Opera Ie 中看到我给它们的元素 内联块 和 最小 最大宽度 它们的宽度自动设置为 最小宽度 而不是最大宽度 如预期的那样 这是正常行为吗 我可以用CSS方式解决它 具有最大宽度的内联块元素 吗 我了解 floa
  • 快速输入输出功能

    define getcx getchar unlocked inline void inp int n fast input function n 0 int ch getcx int sign 1 while ch lt 0 ch gt