热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

std::__gcd和std::gcd有什么区别?

StackOverflow上的许多网站和问题都引用了一个名为.这个函数和有什么区别?std::__gcdstd::gcd

Stack Overflow上的许多网站和问题都 引用了一个名为. 这个函数和 有什么区别? std::__gcdstd::gcd

回答

我对此做了一些调查。看起来该__gcd函数是在标头(第 1503 行)的 libstdc++ 实现中定义的私有辅助函数。它仅由std::rotate函数内部使用(第 1610 行)。它(可能)从未打算直接在库实现之外使用。因为它特定于 libstdc++,所以不能保证通过 g++ 以外的编译器尝试使用此函数。从这个意义上说,您可以将该std::__gcd函数视为(文档不足的)内部帮助程序,该帮助程序仅适用于某些 C++ 编译器。

(有趣的事实:我首先__gcd被一个现已删除的问题提醒到这里的存在,该问题询问为什么它不一致地处理负输入。结果它并不是真正设计用于处理负数,因为 libstdc++ 实现仅在以下情况下使用它输入是非负的。这是使用未记录的内部帮助函数的风险之一!)

另一方面,std::gcd是在 C++17 中引入的标准 C++ 库函数。这意味着任何符合 C++17 的编译器都将支持std::gcd,因此如果您有符合 C++17 的编译器,最好使用此选项。

对于 C++14 或更低版本,您可以简单地实现自己的版本 GCD 功能。Euclid 的算法编码非常简单,运行速度非常快。






推荐阅读
author-avatar
UJXo小妖春日望美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有