赞
踩
背景:在刷题代码随想录时发现参考代码使用了swap函数,但是是用来交换一个vector容器中的两个元素的;但是我依稀记得标准模板库中vector函数自带的swap函数是用来交换两个容器内所有的元素的;
注意:这是头文件<algorithm>中包含的函数,他是配合容器来使用的
注意:在题目代码随想录中使用的swap函数是这个,这是标准命名空间中提供的函数
- int temp = a;
- a = b;
- b = temp;
- # 加减法
- a = a + b;
- b = a - b;
- a = a - b;
-
- # 补充:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失
- # 乘除法
- a = a * b;
- b = a / b;
- a = a / b;
-
- 补充1:与加减法类似,可以处理整型和浮点型变量,但在处理浮点型变量时也存在精度损失问题,而且乘除法比加减法要多一条约束,即b必不为0
- 补充2:可能经验上的某种直觉告诉我们,加减法和乘除法可能会溢出,而且乘除的溢出会特别严重。其实不然,采用这两种方法都不会溢出。以加减法为例,第一步的加运算可能会造成溢出,但它所造成的溢出会在后边的减运算中被溢出回来。
- # 异或法
- 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
-
- # 补充:异或法可以完成对整型变量的交换,但是对于浮点型变量它无法完成交换。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。