C++中的swap()函数
时间:2020-02-23 14:30:07 来源:igfitidea点击:
介绍
在本教程中,我们将学习C++编程语言中的swap()函数。
交换是C++中的一个简单操作,基本上是在任何数据类型的两个变量之间交换数据或者值。
考虑到两个变量的数据类型相同。
因此,让我们直接了解该函数及其功能。
在C++中swap()函数的工作
标准库中C++中的swap()
函数是在两个相同类型的给定变量之间直接交换值的函数。
让我们看看使用相同的语法:
语法,
std::swap( a , b );
这里:
- a和b都是相同数据类型的变量,
- 我们将它们都传递给
swap()
函数,并且它们各自地址处的值相互交换, - a现在存储先前具有的值b,而b具有交换之前存储的a的值。
现在,让我们看看如何在C++中使用swap()
函数。
如何在C++中使用swap()函数
正如我们之前指定的那样,C++中标准库中的swap()
函数可以交换任何数据类型的值,包括int,float,string等,甚至数据结构,如数组,堆栈和队列等。
因此,现在我们来看一些示例,在这些示例中我们尝试交换整数,字符串以及数组,以使您有一个清晰的了解。
1.在C++中使用swap()交换两个整数值
首先,让我们考虑使用函数交换两个整数值。
仔细看下面的代码,
#include <iostream> using namespace std; int main() { //values before swapping int val1 = 2; int val2 = 5; //swapping using swap() swap(val1, val2); //values after swapping cout<<"New value of val1 = "<<val1<<endl; cout<<"New value of val2 = "<<val2<<endl; return 0; }
输出:
New value of val1 = 5 New value of val2 = 2
其中
- val1和val2分别用值2和5初始化
- 在将它们都传递给std :: swap()函数之后,将打印它们的值以确认交换
- 如我们所见,val1现在保存5,而val2存储2。
也就是说,我们成功地交换了两个值
2.使用swap()交换两个字符串
现在,让我们看看如何从字符串头文件中交换两个字符串对象。
#include <iostream> #include <string> using namespace std; int main() { //strings before swapping string string1 = "String 1"; string string2 = "String 2"; //swapping strings using swap() swap(string1, string2); //strings after swapping cout<<"New value of string1 = "<<string1<<endl; cout<<"New value of string2 = "<<string2<<endl; return 0; }
显然,从下面给出的输出中,我们的交换是成功的。
字符串" string1"和" string2"的值都被交换。
3.使用swap()交换两个array()
我们甚至可以使用swap()函数交换数组。
让我们看看
#include <iostream> using namespace std; int main() { //arrays before swapping int array1[3] = {1,2,3}; int array2[3] = {2,4,6}; int i; //swapping arrays using swap() swap(array1, array2); //arrays after swapping cout<<"New value of array1 = "<<endl; for(i=0;i<3;i++) cout<<" "<<array1[i]; cout<<"\nNew value of array2 = "<<endl; for(i=0;i<3;i++) cout<<" "<<array2[i]; return 0; }
在上面的代码中:
- array1和array2是两个给定的数组
- 我们将两个数组都传递给
swap()
函数进行交换 - 交换之后,从输出中可以看到,两个数组的内容现在都已交换
注意:这里我们使用交换整数,字符串和数组的示例来进行清楚的理解。
但是功能交换能力不限于这些数据类型。
我们还可以交换其他数据结构,例如堆栈和队列以及其他数据类型
在C++中使用swap()函数时出错
当使用swap()
函数时,如果我们尝试交换属于两种不同数据类型的两个变量的值。
编译器将引发以下错误。
#include <iostream> using namespace std; int main() { //arrays before swapping int array1[3] = {1,2,3}; char array2[3] = {'1','2','3'}; int i; //swapping arrays using swap() we get error here swap( array1, array2); //arrays after swapping cout<<"New value of array1 = "<<endl; for(i=0;i<3;i++) cout<<" "<<array1[i]; cout<<"\nNew value of array2 = "<<endl; for(i=0;i<3;i++) cout<<" "<<array2[i]; return 0; }
错误:
C:\Users\sneha\Desktop\C++.cpp [Error] no matching function for call to 'swap(int [3], char [3])'
因此,为了避免这种类型的冲突,我们必须确保变量的数据类型相同。