关于swap的两种实现的说明
来源:互联网 发布:同步英语听力软件推荐 编辑:程序博客网 时间:2024/06/15 01:06
最近发现大量博客上面关于交换函数的实现,基本上都给出了两种方式,一种是C++函数库已经实现的。另一种用异或实现。
1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符。
void swap(int &a, int &b) { int temp ; temp =a; a = b; b = temp;}
需要构建临时对象,一个拷贝构造,两次赋值操作。
2,针对int型优化:
void swap(int &a, int &b) { a ^= b; b ^= a; a ^= b;}
无需构造临时对象,异或。
实际实验发现第二种方式存在漏洞,实验如下:
#include#include using namespace std;void swap(int & a, int & b) { a ^= b; b ^= a; a ^= b;}int main(){ int a[2] = {2,2}; cout<
从结果可以看出当两个参数为同一个引用的时候,结果会直接改为零。所以该种实现方式应慎用。
阅读全文
0 0
- 关于swap的两种实现的说明
- 关于 swap 分区的说明
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明
- 关于Redis两种持久化方式的说明
- 关于Swap的几种方法
- swap接口的实现
- Swap函数的实现
- 阿里云建立swap的两种方法
- 操作系统内存管理的两种机制--swap和page
- swap()函数的几种实现
- swap交换函数的三种实现
- SWAP方法的四种实现方式
- 关于swap, max 的速度
- swap关于指针的使用
- luaError json解析错误1
- [lesson4]用USB连接console
- 4、Java 对象底层
- Win32API学习笔记第五章(一)
- windons实现Yang Liu的Topical Word Embeddings
- 关于swap的两种实现的说明
- JVM中类的卸载机制
- 七、Wampserver3.0.6自定义虚拟目录、多站点配置及端口号的更改
- [Effective Java Second Edition]创建实例的5种方式
- spring boot默认配置文件application.properties的属性读取
- jquery中attr和prop的区别
- kotlin中map的使用技巧
- 使用构造方法初始化还是使用set方法
- PathMeausre+示例学习