C++ 一种交换两个数的思路
  N6a97vLhjWLX 2023年11月02日 24 0
C++

在 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
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: C++|IDE 下一篇: 【线段树】动态开点
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  oBaV3jusLkh1   15小时前   9   0   0 C++
  zmdlW8Gb4mGv   10天前   13   0   0 C++
  nmX9dIiR6BtA   15小时前   8   0   0 C++
N6a97vLhjWLX