【问题标题】:Simultaneously reassign values of two variables in c++在c ++中同时重新分配两个变量的值
【发布时间】:2022-01-28 16:26:15
【问题描述】:

在 C++ 中有没有办法模拟这种 Python 语法

a,b = b,(a+b)

我知道这对于一个临时变量来说是微不足道的,但我很好奇如果不使用它是否可能?

【问题讨论】:

    标签: python c++ variable-assignment swap


    【解决方案1】:

    可以使用标准C++函数std::exchangelike

    #include <utility>
    
    //...
    
    a = std::exchange( b, a + b );
    

    这是一个演示程序

    #include <iostream>
    #include <utility>
    
    int main()
    {
        int a = 1;
        int b = 2;
    
        std::cout << "a = " << a << '\n';
        std::cout << "b = " << b << '\n';
    
        a = std::exchange( b, a + b );
    
        std::cout << "a = " << a << '\n';
        std::cout << "b = " << b << '\n';
    }
    

    程序输出是

    a = 1
    b = 2
    a = 2
    b = 3
    

    您可以在计算斐波那契数的函数中使用这种方法。

    【讨论】:

      【解决方案2】:

      当要解包的值超过两个时,您可以分配给std::tie。在 python 中,您可以使用a, b, c = 1, 2, 3,而使用std::exchange 是不可能的。 Vlad's 答案非常适合您的用例。此答案旨在补充 Vlad 的答案。

      int a = 1;
      int b = 2;
      int c = 3;
      
      std::tie(a, b, c) = std::make_tuple(4, 5, a+b+c);
      std::cout << a << " " << b << " " << c; // 4 5 6
      

      Try it Online

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-04
        • 2019-11-19
        • 1970-01-01
        • 1970-01-01
        • 2013-04-28
        相关资源
        最近更新 更多