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])'

因此,为了避免这种类型的冲突,我们必须确保变量的数据类型相同。