相关疑难解决方法(0)

一个班轮使用std :: tie进行交换

在python中我们可以将两个变量交换为

>>> a , b = b , a
Run Code Online (Sandbox Code Playgroud)

我们可以在C++ 11中进行类似的交换

void swap(int &a,int &b)
{
    std::tie(a,b) = std::make_tuple(b,a);
}
Run Code Online (Sandbox Code Playgroud)

以上工作正常,在O3生成类似的装配

void swap(int &a,int &b)
{
    int c = a;
    a = b;
    b = c;
}
Run Code Online (Sandbox Code Playgroud)

但我的问题是它符合标准还是我遗漏了什么?或者像侥幸......

a = (a+b) - (b=a);
Run Code Online (Sandbox Code Playgroud)

哪个有序列点问题.

c++ c++11

2
推荐指数
2
解决办法
522
查看次数

标签 统计

c++ ×1

c++11 ×1