c++语言swap函数,C++中swap函数

本文是我用到swap函数时,对其产生好奇,所以结合网上有关博文写下的。个人水平有限,若有错误的地方,欢迎留言指出。谢谢!

一、通用的函数交换模板

template

void swap(T &a,T &b)

{

T c(a);

a=b;

b=c;

}

T为类型,可根据实际需要使用相应的类型

二、针对int类型的优化

使用异或,整数异或本身为结果0;一个数异或0结果为本身;

void swap(int &a,int &b)

{

a^=b;

b^=a; //相当于b=a

a^=b; //相当于a=b

}

三、自定义swap时,注意事项

1、达不到交换的作用

void swap(int a,int b)

{

int temp=a;

a=b;

b=temp;

}

这里只是交换了a和b实参的副本,而它们本身没有交换。

2、能达到交换的作用

void swap(int *a,int *b)

{

int temp;

temp=*a;

*a=*b;

*b=temp;

}

//使用

int main()

{

int a=,b=;

swap(&a,&b);

return ;

}

注意,第三行中,不要将temp定义为一个指针,因为没有初始化指针而去使用它很危险。

Ref:

[转]谈谈C++中的swap函数

1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符. template  void swap ( T& a, T& b ) { T c(a) ...

【转】 谈谈C++中的swap函数

1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符. template void swap ( T& a, T& b ) { T c(a) ...

关于swap函数传值的问题

#include  void swap(int * p3,int * p4); int main() {  int a = 9;  int b = 8;  int * p ...

自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理

验证的代码: #include int main(){ char c = 'z'; ) + (c << ) + () + 'a'; printf(&quot ...

C语言中的函数与指针

1. 为什么需要函数? 函数就是功能的封装. 函数就是为了实现某个功能而编写的一段代码 scanf()    ,  printf() 2.函数优点: 代码更简洁 代码复用 如果业务逻辑变化,只把相应的 ...

Swift 中的函数

学习来自 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 练习一: import Foundation //函数 ...

c&plus;&plus; swap 函数

转载地址 1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符. template void swap ( T& a, T& b ) { T ...

&lbrack;Effective C&plus;&plus; --025&rsqb;考虑写出一个不抛异常的swap函数

引言 在我的上一篇博客中,讲述了swap函数. 原本swap只是STL的一部分,而后成为异常安全性编程的脊柱,以及用来处理自我赋值可能性. 一.swap函数 标准库的swap函数如下: namespa ...

&lbrack;020&rsqb;转--C&plus;&plus; swap函数

原文来自:http://www.cnblogs.com/xloogson/p/3360847.html 1.C++最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符 template &lt ...

随机推荐

事件event&lowbar;scheduler

1.查看事件是否开启     1-1.show variables like 'event_scheduler';         1-2.select @@event_scheduler;     ...

Linux网络管理——子网掩码

1. 网络基础 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB",&q ...

Hibernate3&period;0中的session&period;find&lpar;&rpar;问题

我被Session.find()的方法困扰了好几天,今天才看到新的Hibernate里没有了Session.find()方法. 现在转载在此,方便你我. 查询性能往往是系统性能表现的一个重要方面,查询 ...

HTML5 进阶系列:文件上传下载

前言 HTML5 中提供的文件API在前端中有着丰富的应用,上传.下载.读取内容等在日常的交互中很常见.而且在各个浏览器的兼容也比较好,包括移动端,除了 IE 只支持 IE10 以上的版本.想要更好地 ...

JQuery EasyUI的常用组件

jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件,该框架提供了创建网页所需的一切,帮助您轻松建立站点. 注:本次介绍的JQuery EasyUI版本为1.5版. 一 ...

原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现

在我们日常生活中运动就是必不可少的部分,走路.跑步.打篮球等.在网页交互设计上运动也是必不可少的部分,创建的网站交互设计运动模块有轮播图,下拉菜单,还有各种炫酷的游戏效果都跟运动密切相关.所以很重要, ...

Hibernate 补充 ManyToOne、OneToMany、OneToOne的使用例

1.前言      Hibernate 为程序员提供一种级联操作,在编写程序时,通过 Hibernate 的级联功能可以很方便的操作数据库的主从表的数据, 我们最常用的级联是级联保存和级联删除.   ...

PHP实现简单发红包(随机分配,平均分配)

最近碰到一些情况,把思路重新整理了一下,敲出代码.记下来,以后可以借鉴,进一步优化等. 大致的思路:红包主要分两种,一种是平均分配,一种是随机分配. 1.平均分配 平均分配相对好理解,只要把钱平均分给 ...

MySQL基础之 恢复数据和数据库迁移

1.mysql命令或者source命令恢复数据 这两个命令在进行恢复数据的时候要检查是否创建数据库.如果数据库不存在,则恢复失败. 数据库迁移 1.相同版本的mysql数据库之间的迁移. mysqld ...

js 日期格式化函数

直接上代码: // 日期格式化函数 // yyyy/MM/dd hh:mm:ss SSS ⇒ "2017/05/16 09:24:20 850" //"yyyy/M/d ...

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值