首页 > 编程语言 >C++ 一种交换两个数的思路

C++ 一种交换两个数的思路

时间:2023-01-12 22:34:29浏览次数:36  
标签:std int 交换 C++ pair 思路 include 赋值

在 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

标签:std,int,交换,C++,pair,思路,include,赋值
From: https://www.cnblogs.com/mkckr0/p/17048133.html

相关文章

  • 一笔画路径生成(c++版)
    一笔画路径生成(c++)练习图的遍历、回溯新建一个OnePen类;使用setNodeNum()方法设置节点数量;使用setNodeJoin()设置节点连线;执行drawLine()方法即可得出该图的一笔画......
  • BBS个人站点功能思路总结
    目录BBS个人站点功能思路总结一、个人站点功能编写思路概览二、个人站点功能编写思路详细1.开始个人站点路由2.写视图函数3.如果没有此个人站点则展示404page4.如果有这个......
  • C++中的size()、sizeof() 、strlen()、str.length()
    c/c++中获取字符串长度。有以下函数:size()、sizeof()、strlen()、str.length();一、数组或字符串的长度:sizeof()、strlen()1、sizeof():返回所占总空间的字节数2、str......
  • C++分别用顺序栈和链栈实现数制的转换相关代码
    //案例分析:将一个十进制数N转化为八进制数,在计算过程中,使得N模8得到八进制数的各个数依次进栈,//然后将八进制数依次输出,得到八进制数。#include<iostream>#include<cstdlib......
  • 自己的devc++的语法配置
    效果如下......
  • ap,路由器,交换机
    第二段测试实习啦,今天看到测试用例里边的AP愣了一下哈哈哈......
  • c++ std string replaceAll函数
    std提供的string的replace方法,不太方便stringreplaceAll(string&str,stringoldStr,stringnewStr){string::size_typepos=str.find(oldStr);while(pos......
  • C++学习笔记 [ 2 ]
    C++问题的补充前言关于对之前遗留的补充malloc和new的区别const和引用的深入this指针的深入一、C++中对象的创建malloc和new创建对象//定义一个Pointe......
  • C++学习笔记(四)~substr()函数
    substr(pos,len)作用        返回一个新构造的串对象,其值初始化为该对象的子字符串的副本。子字符串是对象的一部分,从字符位置pos开始并跨越len个字符(或直到字符串......
  • C(C++)函数返回多个值
    【Q】C(C++)函数如何返回多个值?【A】1、指针:4票2、结构体:4票 返回多个数据,并且各个数据类型都不相同。 直接返回结构体,程序执行效率会受到影响。因为需要复制......