有没有办法在C++中进行并行赋值?目前,以下编译(有警告)
#includeint 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是parens.
这样做的正确方法就是
std::swap(a, b);
Boost包含一个元组类,您可以使用它
tie(a, b) = make_tuple(b, a);
它在内部创建了一个对a和b的引用元组,然后为它们分配了一个b和a的元组.