有没有办法在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 的值(最右边的操作数)。因为赋值绑定更紧密,所以 b = b 在括号中。
这样做的正确方法就是
std::swap(a, b);
Boost 包含一个元组类,你可以用它来做
tie(a, b) = make_tuple(b, a);
它在内部创建一个对 a 和 b 的引用的元组,然后为它们分配一个 b 和 a 的元组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)