有没有办法在C++中进行并行赋值?目前,以下编译(带有警告)
#include <iostream>
int main() {
int a = 4;
int b = 5;
a, b = b, a;
std::cout << "a: " << a << endl
<< "b: " << b << endl;
return 0;
}
并打印:
a: 4
b: 5
我希望它打印的内容......如果不明显的话,是:
a: 5
b: 4
例如,Ruby 或 Python。
最佳答案
这是不可能的。您的代码示例
a, b = b, a;
按以下方式解释:
a, (b = b), a
它什么也没做。逗号运算符使其返回 a 的值(最右边的操作数)。因为赋值绑定(bind)更紧密,所以 b = b 在括号中。
正确的做法是
std::swap(a, b);
Boost 包含一个元组类,您可以使用它来执行操作
tie(a, b) = make_tuple(b, a);
它在内部创建一个对 a 和 b 的引用的元组,然后为它们分配一个 b 和 a 的元组。
关于c++ - C++ 中的并行赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47926650/