有没有办法在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;
}
Run Code Online (Sandbox Code Playgroud)
和打印:
a: 4
b: 5
Run Code Online (Sandbox Code Playgroud)
我想要它打印...如果不明显,是:
a: 5
b: 4
Run Code Online (Sandbox Code Playgroud)
就像在ruby或python中一样.
Joh*_*itb 16
那是不可能的.你的代码示例
a, b = b, a;
Run Code Online (Sandbox Code Playgroud)
按以下方式解释:
a, (b = b), a
Run Code Online (Sandbox Code Playgroud)
它什么都不做.逗号运算符使其返回a(最右边的操作数)的值.因为赋值更严格,b = b是parens.
这样做的正确方法就是
std::swap(a, b);
Run Code Online (Sandbox Code Playgroud)
Boost包含一个元组类,您可以使用它
tie(a, b) = make_tuple(b, a);
Run Code Online (Sandbox Code Playgroud)
它在内部创建了一个对a和b的引用元组,然后为它们分配了一个b和a的元组.