问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SWAP函数

发布网友 发布时间:2022-05-01 21:46

我来回答

3个回答

热心网友 时间:2022-06-23 23:25

swap函数,作用是交换两个元素的值,以STL的源代码为例:
template <class T> void swap ( T& a, T& b )
{
T c(a); a=b; b=c;
}

代码很简单,推荐使用STL
algorithm中的swap函数而不要自己写swap函数,因为STL的swap函数有很强的通用性,它基本可以交换任意类型的元素(包括vector,list……)。

看一个例题:给两个数组,交换这两个数组的元素,并打印:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
void myprint(int
&num){cout<<num<<"
";}
int main()
{

vector
<int> A,B;
int
n,m;

cin>>n;
for(int
i=0;i<n;i++)
{

int t;
cin>>t;

A.push_back(t);
}

cin>>m;
for(int
i=0;i<m;i++)
{

int
t;cin>>t;

B.push_back(t);
}

swap(A,B);

for_each(A.begin(),A.end(),myprint);cout<<endl;

for_each(B.begin(),B.end(),myprint);cout<<endl;
return
0;
}

swap函数可以直接交换两个vector的值,其实是这样的:vector向量中重载了=操作符号,vector和vector之间可以直接赋值。

但是swap函数有一个缺点,就是无法交换2个迭代器的值,想要交换一个string中的两个要这么写的:
交换pos1和pos2两个位置的值。
string str;
int pos1,pos2;
cin>>str>>pos1>>pos2;
swap(str.begin()+pos1,str.begin()+pos2);
但是CE了,说明swap函数不能交换iterator。

注意:swap函数只能交换两个相同类型的值。

热心网友 时间:2022-06-23 23:26

传进去的是int等简单类型,是传值,值改变后,不会影响调用语句的值、只在该函数内有效。

而传数组就不是,是传址,值改变后,调用的语句的值也会改变。追问可是我并没有传她的引用,,,这里的R不是副本吗???

热心网友 时间:2022-06-23 23:26

第一个swap(r[i], r[j])是值传递, 第二个是引用传递
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
街头篮球手游中锋攻略汇总 C位攻略大全 街头篮球手游中锋有什么技巧 中锋C技巧详解 php一个表单提交数据怎么区分开,隐藏域可以吗,如果可以怎么用。 梦见牙掉光了什么预兆 梦见牙齿掉完了是什么征兆 梦见牙齿全掉了是什么预兆 梦见一口牙全部掉了是什么预兆 教师年度考核不认课的领导班子成员,干的工作不少,怎样考核办法公平... 湖北省郧西县义务教育学校绩效工资实施办法绩效工资总量和水平的... 事业单位年底是否有绩效奖金的 c语言中swap(a,b)是什么意思 swap A for B是把A换成B还是把B换成A?是用A交换B还是用B交换A? 物控培训内容与采购培训内容 烤箱版面包糠鸡翅的做法步骤图,怎么做好吃 面包糠,面包糠怎么吃才好 求关于此图的QQ表情包 求卡 丘比龙表情包 大图标的 350910378@qq.com 发我邮箱 QQ的表情包如何找啊 跪求丘比龙qq表情包求完整版,不要几个的十几个的~~~ 我想删除微博自己发表的东西 怎么删??怎么全删??? 3回答 谁有 丘比龙 的全套QQ表情包(大概80来个吧),跪求发送 wing8606@sina.com 谁有小号丘比龙的QQ表情包?像下面这样的。上传给我,谢谢! 为什么现在突然搜不到安徽卫视了? 安徽卫视新水浒是在夜里几点重播 关于安徽卫视节目表的问题? 鲜海参的做法怎样口感好 安徽卫视今天的节目表 安徽卫视现在播放的节目,在网上什么地方可以看到! 得体便捷式即热饮水机的优点是什么? 小度智能音箱多少钱啊? C语言数值的交换 定义一个函数swap,功能为交换两个变量a和b的值,在主函数中输入2个数,调用该函数,输出交换后的数据. 在c++使用swap函数需要怎么样的头文件 Pascal中变量形参与数值形参有什么不同?(请详细解释变量形参。) 如果有时间,请帮忙解释有关for语句。 平安信用卡怎么调整额度? C语言:定义宏swap(x,y)用于交换两个参数x和y的值,并编写程序测试 java. a类中有个方法swap(int a,int b)作用交换a,b值。 我在主方法调用此方 C++中 写一个swap函数 用来交换两个不同大小的数组, 怎么用传入指针实现? 西瓜的营养成分高吗? for循环体对数组前后两个数进行对换程序语言怎么写 西瓜的全部营养详细介绍 定义一个带参数的宏swap(x,y),以实现两个整数之间的交换,并利用它将一维数组a和b进行交换。 冒泡排序 快速排序 swap(&a,&b)和swap(a,b)在以下题目中有什么区别? 关于java 的swap C语言定义一个自定义指针函数,使它交换一数组维A,B的值,同时可以交换C,D的值 定义函数swap(int a[], int i ,int j),函数功能为能够实现a[i],a[j]值互换. 将一个3*2的二维数组A表示矩阵(如下图)转置存入B中,再按矩阵的形式输出A和B 编写一个交换变量值的函数,利用该函数交换数组a和数组b中的对应元素值。要求尽量用指针的方法实现。数组a linux里面swap和swpd区别