交换两个变量的值很简单。

比如 int a = 1; b = 2; 交换a b的值

这个很简单 很容易想到的是找个中间变量比如  int temp  = a; a = b; b = temp;

不需要中间变量可不可以?

当然是可以的。

比如

【加减法】

a = a + b; b = a - b; a = a - b;

该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失,例如对数据:

a = 3.123456

b = 1234567.000000

交换后各变量值变为:

a = 1234567.000000

b = 3.125000

很明显,原来a的值在交换给b的过程中发生了精度损失。

【乘除法】

a = a * b; b = a / b; a = a / b;

乘除法更像是加减法向乘除运算的映射,它与加减法类似:可以处理整型和浮点型变量,但在处理浮点型变量时也存

在精度损失问题。而且乘除法比加减法要多一条约束:b必不为0。

可能经验上的某种直觉告诉我们:加减法和乘除法可能会溢出,而且乘除的溢出会特别严重。其实不然,采用这两种

方法都不会溢出。以加减法为例,第一步的加运算可能会造成溢出,但它所造成的溢出会在后边的减运算中被溢出回来。

【异或法】

a ^= b;       //a=a^b

b ^= a;      //b=b^(a^b)=b^a^b=b^b^a=0^a=a

a ^= b;     //a=(a^b)^a=a^b^a=a^a^b=0^b=b

异或法可以完成对整型变量的交换,对于浮点型变量它无法完成交换。

第二类方法更像是玩了一个文字游戏,此种方法采用了在代码中嵌入汇编代码的方法避免了临时变量的引入,但究其

本质还是会使用额外的存储空间。此种方法可以有很多种,下边列出几种:

等等..............

但是对结构体这种交换就不太实用了应为结构体需要对每个数据都进行交换,这个时候用函数就是最简单的了。

C++提供了一个swap函数用于交换,用法如下。

swap 包含在命名空间std 里面

1 #include

2 #include

3 #include//sort函数包含的头文件

4 using namespacestd;5 //定义一个学生类型的结构体

6 typedef structstudent7 {8 string name; //学生姓名

9 int achievement; //学生成绩

10 } student;11

12

13

14

15 //用来显示学生信息的函数

16 void show(student *stu,intn)17 {18 for(int i = 0; i < n; i++)19 {20 cout<

24 intmain()25 {26 student stu[] = { {"张三",99},{"李四",87},{"王二",100} ,{"麻子",60}};27 cout<

用函数不用担心精度的损失

1 #include

2 using namespacestd;3 intmain()4 {5 float a = 3.123456,b = 1234567.000000;6 swap(a,b);7 cout<"<

1 #include

2 #include

3 using namespacestd;4 intmain()5 {6 string a ="666",b = "999";7 swap(a,b);8 cout<"<

c swap方法在哪个库里面_C++中的swap(交换函数)相关推荐

  1. c语言中swap函数_C ++中的swap()函数

    c语言中swap函数 介绍 (Introduction) In this tutorial, we are going to learn the swap() function in C++ prog ...

  2. c swap方法在哪个库里面_在编程竞赛中高效地编写C/C ++代码

    首先,您需要了解模板,宏和向量,然后再进行下一阶段! 模板是通用编程的基础,它涉及以独立于任何特定类型的方式编写代码. 宏是已命名的代码片段.每当使用该名称时,它就会被宏的内容替换. 向量与动态数组相 ...

  3. c swap方法在哪个库里面_覆膜条件下土壤水热动态与玉米种子生长的SWAP修正模型...

    点击上方蓝色文字关注↑↑↑↑↑ 文章基本信息 原名:A modified SWAP model for soil water and heat dynamics and seed–maize grow ...

  4. c swap方法在哪个库里面_swap

    swap 描述 (Description) 它通过ust的内容交换容器的内容,ust是另一个包含相同类型元素的unordered_set对象. 尺寸可能不同. 声明 (Declaration) 以下是 ...

  5. Python线性代数扩展库numpy.linalg中几个常用函数

    本文内容节选自董付国老师2000页Python系列课件第17章"数据分析.科学计算.可视化.机器学习"(本章PPT共410页). ----------相关阅读---------- ...

  6. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

  7. C++ 调用lib 和 dll的 方法 及 动态库DLL与静态库lib的区别

    C++ 调用.lib的方法: 一: 隐式的加载时链接,有三种方法 1  LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add F ...

  8. keil lib 只调用自己的函数_C语言学习篇(28)——函数库

    引言 我们在编写代码时,常常会写一个.c源文件和与之对应的.h文件(例如a.c和a.h),并在源文件.c中定义(具体实现)一些函数,在.h文件中声明, 这样我们就可以在其他源文件中包含该头文件,来调用 ...

  9. gcc undefined reference to 问题解决方法(使用库)

    最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...

最新文章

  1. 抗击肺炎:新冠肺炎疫情数据可视化及疫情预测分析
  2. [蓝桥杯][算法提高]和谐宿舍2(记忆化搜索)
  3. 临死之前我要写一本《中国哲学史——以自然主义和人道主义的矛盾为视角》...
  4. HPU--1189 Ou à
  5. [Oracle]GoldenGate官方文档
  6. 学计算机好还是学西点,女生学西点师有后悔的吗 西点师有前途吗
  7. 如何获取CSDN积分
  8. java架构师成长之路学习心得
  9. 深海迷航坐标传送代码_深海迷航全控制台代码汇总 深海迷航物品作弊码大全...
  10. STM32 HAL库学习笔记3-HAL库外设驱动框架概述
  11. 2019大数据挑战赛
  12. Pytorch中报错RuntimeError: The size of tensor a (60) must match the size of tensor b (56)
  13. 卓越郭朝晖:垂直类B2C网站可能昙花一现
  14. java mail eml_使用JavaMail解析EML文件
  15. 520送什么蓝牙耳机好?高颜值高性价比的无线蓝牙耳机推荐
  16. 推荐贝塔斯曼书友会淘宝旗舰店
  17. ubuntu 16.04.4 desktop版安装
  18. 《趣味知识博文》小W与小L带你聊天式备考CDA Level Ⅰ(六)
  19. 李嘉诚布局接班人富儿穷养 财富版图正远离中华区
  20. 将汉字转化为拼音,正则表达式和得到汉字的Unicode编码

热门文章

  1. 动手写一个微信聊天页,有文字,有语音,有图片
  2. 内存分配算法java_被说烂了的Java垃圾回收算法,我带来了最“清新脱俗”的详细图解...
  3. Gitlab 任意文件读取漏洞 CVE-2016-9086 漏洞复现
  4. lucifer与它的《力扣加加》来啦
  5. 2023天梯赛个人题解
  6. centos卸载软件
  7. 你真的知道怎么实现一个延迟队列吗?
  8. 虚拟机安装linux鼠标消失了,VirtualBox/Ubuntu鼠标消失
  9. mongo数据库的认识
  10. 用 Python 写个开心刮刮乐