C++中的并行赋值

Nic*_*ick 6 c++

有没有办法在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的元组.