C++写出像python那样优雅的一行交换函数

 
Category: C_C++

写在前面

众所周知, Python中交换两个数可以用:

a, b = b, a

十分优雅, 那么C++可以这样吗? C++11告诉你, 能!

tie(a, b) = pair(b, a);

测试一下:

#include <iostream>
using namespace std;

int main(int argc, char const *argv[]) {
    int a = 10, b = 20;
    cout << a << " " << b << endl;
    tie(a, b) = pair(b, a);
    cout << a << " " << b << endl;
    /*10 20
    20 10*/
    return 0;
}

pair真是个好东西!

当然了, 这样写其实有点消耗内存, 因为多开辟了一个pair, 炫技可以用, 一般情况下还是老老实实swap(a, b)吧.