在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
在 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
.
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