gpt4 book ai didi

c++ - std::__gcd 和 std::gcd 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 16:08:13 38 4
gpt4 key购买 nike

Many websitesquestions on Stack Overflow引用名为 std::__gcd 的函数。这个函数和 std::gcd 有什么区别?

最佳答案

我对此做了一些调查。它看起来像 __gcd函数是定义的私有(private)辅助函数 in the libstdc++ implementation of the <algorithm> header (line 1503) .它仅由 std::rotate 在内部使用函数(第 1610 行)。它(可能)从未打算在库实现之外直接使用。因为它特定于 libstdc++,所以不能保证通过 g++ 以外的编译器使用此函数。从这个意义上说,你可以想到 std::__gcd用作(记录不详的)内部助手,仅适用于某些 C++ 编译器。

(有趣的事实:我第一次注意到 __gcd 的存在是因为这里有一个现已删除的问题,询问它为什么不一致地处理负输入。事实证明它并不是真正设计用于处理负数,因为 libstdc++ 实现仅在输入为非负的情况下使用它。这是使用未记录的内部辅助函数的风险之一!)

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

对于C++14或更低版本,你可以简单地实现你自己版本的GCD功能。欧几里得算法非常易于编写代码并且运行速度极快。

关于c++ - std::__gcd 和 std::gcd 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68772236/

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