在c++中同时重新分配两个变量的值

Simultaneously reassign values of two variables in c++

在 C++ 中是否有模拟此 python 语法的方法

a,b = b,(a+b)

我知道使用临时变量很容易做到这一点,但我很好奇如果不使用临时变量是否可行?

你可以像

一样使用标准的C++函数std::exchange
#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

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

您可以分配给 std::tie when there are more than two values to unpack. In python, you could do a, b, c = 1, 2, 3, which is not possible using std::exchange. 答案非常适合您的用例。这个答案是为了补充 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