c语言swap函数怎么写,C++swap函数

c语言swap函数怎么写,C++swap函数,C++ 中的Swap函数写法汇总

本文主要介绍了C中交换函数编写的总结,本文通过实例代码非常详细的介绍给大家,有一定的参考价值,有需要的朋友可以参考一下。

Swap函数是几乎所有初学者编写的最基本的函数之一,通常用于理解函数概念、形式参与自变量、引用和指针。但是,这个极其基本的功能却起着非常重要的作用。由于交换函数的重要性和普遍性,它必须具有极高的安全性。本文介绍了常见的C语言编程中有多少种方法可以写出- Swap函数?

在说C模板的方法之前,我们先思考一下如何用C语言进行交换。

例如,要交换两个int值,你会想到下面的代码吗:

无效互换(inta,int b)

{

int t=a;

a=b;

b=t;

}

如果不需要临时变量,可以考虑异或。

无效互换(inta,intb)

{

如果(a!=b)

{

a ^=b;

b ^=a;

a ^=b;

}

}

整数比较好理解。如果它们是字符串呢?字符串交换不能用上面类似的方法直接赋值。想想原因?)

//伪代码

void swap(char* a,int sizeofa,char*b,int sizeofb)

{

char temp[MAX]={ 0 };

strncpy(temp,sizeof(temp)-1,a);

strncpy(a,sizeofa-1,b);

strncpy(b,sizeofb-1,temp);

}

当然,如果你也可以使用指针的指针。

无效交换(字符** a,字符** b)

{

char * tmp=* a;

* a=* b;

* b=tmp

}

以上方法都是根据具体类型来处理的。有没有更通用的写法?

让我们看看C如何处理交换:

void交换(字符串a,字符串b)

{

字符串c(a);

a=b;

b=c;

}

是不是和int的很像?

让我们看看标准库中的交换算法是如何实现的:

命名空间标准{

模板类型名称T

无效交换(T a,T b) {

测试温度(a);

a=b;

b=温度;

}

}

模板C是一个非常重要的概念,很多通用算法都可以用模板来实现。上面的std:swap需要类T实现复制构造函数,和上面的实现一样,需要赋值操作,这将导致大量事务请求的性能损失。

因此,在C 11标准中对实现进行了优化。看上面的字符串类交换只需要交换地址。按照这个思路,一般swap中只交换指针,不交换赋值。这种实现可以大大提高性能,并明显提高大型对象的效率。

模板类型名称T

无效交换(时间、容量){

t temp(STD:move(a));

a=STD:move(b);

b=STD:move(temp);

}

是std:move奇怪:)是C 11的新概念,内部实现只是cast。

模板类型名称T

检测类型(自动)移动(T参数)

{

使用ReturnType=remove _ reference _ TT;

return static _ castReturnType(param);

}

c普通编程-有多少种方法写-交换函数?https://www.cppentry.com/bencandy.php? FID=49id=265714

编程数据https://www.cppentry.com

总结

关于C中swap函数编写的总结这篇文章就到这里了,更多关于C中Swap函数的内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: