在 Lua 或者 Python 中可以使用多值賦值陳述句來交換兩個數,例如:a, b = b, a,在 C++ 中有沒有類似的操作?
先決議一下多值賦值的原理,a, b = b, a 等價于
t1, t2 = b, a
a, b = t1, t2
可以看到多值賦值還是用到了中間變數,而且還是兩個,想到兩個變數,可以聯想到 C++ 中的 std::pair,可以用 std::make_pair(b, a) 構造中間變數,來完成上述第 1 條陳述句的功能,中間變數是 std::pair 型別,如何將 std::pair 的兩個元素賦值給 a 和 b ? 可以利用 std::tie 對 std::pair 進行 unpack,示例代碼如下:
#include <iostream>
#include <tuple>
int main()
{
int a = 1, b = 2;
std::tie(a, b) = std::make_pair(b, a);
std::cout << a << " " << b << std::endl;
}
成功輸出:
2 1
這種方法也和多值賦值一樣可以適用于多個數的交換,例如讓 a、b、c、d 四個數左回圈交換一次(全部往左邊挪一個位置),示例代碼如下:
#include <iostream>
#include <tuple>
int main()
{
int a = 1, b = 2, c = 3, d = 4;
std::tie(a, b, c, d) = std::make_tuple(b, c, d, a);
std::cout << a << " " << b << " " << c << " " << d << std::endl;
}
成功輸出:
2 3 4 1
本文來自博客園,作者:mkckr0,轉載請注明原文鏈接:https://www.cnblogs.com/mkckr0/p/17048133.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541829.html
標籤:其他
下一篇:指標
