【问题标题】:Inbuilt __gcd(A,B) function in C++C++ 中的内置 __gcd(A,B) 函数
【发布时间】:2021-08-13 20:08:59
【问题描述】:

最近我了解了 c++ 中的一个特殊功能:__gcd(A,B)。这将返回 A 和 B 的最大公约数。

#include<iostream>
#include<algorithm>
using namespace std;

main()
{
cout<<__gcd(10,40); //op: 10
}

用两个下划线开始函数定义有什么特殊原因吗?

它可以像gcd(A,B) 一样简单,就像其他 STL 函数一样。

【问题讨论】:

  • 和其他内置函数一样你指的是哪些?
  • 我不认为它是供公众使用的。
  • @Borgleader like sort() ,qsort() ,swap( ) 等
  • @JerryGoyal 所有这些都是标准库函数(如,C++ 标准要求它们存在), __gcd 是 gcc 特定的,因此不可移植。 Related question

标签: c++


【解决方案1】:

以两个下划线开头的名称保留用于实现,这意味着您不能在代码中定义此类名称,并且如果这些名称确实存在,则没有标准保证它们的含义。但是,供应商可能会选择记录一些此类名称,在这种情况下,您可以将它们与供应商记录它们的产品一起使用。

【讨论】:

    【解决方案2】:

    在 C++17 中有 GCD 和 LCM 的标准库函数。

    #include <iostream>
    #include <numeric>
    
    int main ()
    {
        int a, b;
        std::cin >> a >> b;
        std::cout << std::gcd(a,b) << '\n';
        return (0);
    }
    

    【讨论】:

      猜你喜欢
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多