c++ swap函数用法
时间: 2025-02-01 09:07:56 AIGC 浏览: 86
### C++ `swap` 函数详解
#### 语法说明
在C++标准库中,`std::swap` 是一种通用工具函数模板,用于交换两个对象的值。此操作对于各种数据类型的对象均适用,包括基本类型以及自定义类的对象。
```cpp
namespace std {
template <class T>
void swap(T& a, T& b);
}
```
该模板接受两个同类型的左值引用作为参数,并将它们所指代的数据成员互换位置[^2]。
#### 实现方式对比
简单版本的 `swap` 函数可能会像这样编写:
```cpp
void simpleSwap(int &a, int &b){
int tmp = a;
a = b;
b = tmp;
}
```
然而,在现代C++实践中推荐使用STL提供的 `std::swap` 方法来处理不同类型间的交换需求。它不仅限于内置数值型态,还支持容器、字符串乃至复杂结构体等更广泛的情景下完成高效而安全的价值传递过程[^4]。
#### 完整示例程序展示
下面给出一段完整的代码片段用来演示如何利用 `std::swap` 对不同种类的数据项执行交换动作:
```cpp
#include <iostream>
using namespace std;
int main(){
// 基本类型之间的交换
int numA=1,numB=2;
cout << "Before swapping: A=" << numA << ", B="<<numB<<endl;
swap(numA,numB); // 调用全局命名空间下的swap
cout << "After swapping : A=" << numA << ", B="<<numB<<endl;
// 用户自定义类型之间也可以使用swap
struct Point{
double x,y;
friend ostream& operator<<(ostream&, const Point&);
void swap(Point&) noexcept;
};
Point p1{.x=3,.y=7},p2{.x=-8,.y=9};
cout<<"Points before:"<<p1<<","<<p2<<'\n';
p1.swap(p2);
cout<<"Points after :"<<p1<<","<<p2<<'\n';
return 0;
}
// 输出Point实例的方法
ostream& operator<<(ostream &os,const Point &pt){
os <<"{"<< pt.x<<','<<pt.y <<'}';
return os;
}
// 自定义swap方法实现
void Point::swap(Point &other)noexcept{
using std::swap;
swap(x , other.x );
swap(y , other.y );
}
```
这段代码展示了从简单的整数到较为复杂的用户定义类型(如这里的二维坐标点),都可以借助 `std::swap` 来轻松达成元素间值得转换目的。
阅读全文
相关推荐




















