在C++中同时重新赋值两个变量的值

4
在C++中是否有一种方法来模拟Python语法?
a,b = b,(a+b)

我知道利用临时变量可以轻松实现这一点,但我想知道是否有不使用临时变量的方法?

2个回答

8
您可以使用标准的 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

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


4
当需要拆包多个值时,可以使用std::tie进行赋值。在Python中,您可以使用a, b, c = 1, 2, 3进行拆包,但是使用std::exchange则不行。对于您的用例,Vlad的回答非常完美。本回答旨在补充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

在线尝试


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接