swap()是一个标准的库函数,它可以将任意两个对象交换b / w值。在C11中,它已移至<utility>标头下。以下是swap()的语法详细信息。
语法:
void swap (T& a, T& b);
参数: T&a,T&b,它们是要交换的对象
返回类型: void-不返回任何内容。
用法:交换两个对象的黑白值
例子:
1)交换两种内置数据类型
在下面的示例中,我们看到如何使用std :: swap()函数交换两个整数。
#include <bits/stdc++.h> using namespace std; int main(){ int a = 10, b = 20; cout << "Before swapping:\n"; cout << "//答: " << a << ", b: " << b << endl; //立即交换 swap(a, b); cout << "After swapping:\n"; cout << "//答: " << a << ", b: " << b << endl; return 0; }
输出:
Before swapping: //答: 10, b: 20 After swapping: //答: 20, b: 10
2)交换两个用户定义的对象
在下面的示例中,我们看到如何使用std :: swap()函数交换两个用户定义的对象。在这里,我们定义了一个学生类,因为我们看到交换如何在他们之间交换内容。
#include <bits/stdc++.h> using namespace std; class student { public: int roll; string name; int marks; student() { roll = -1; name = ""; marks = 0; } student(int r, string s, int m) { roll = r; name = s; marks = m; } }; void print(student t) { cout << "//滚动: " << t.roll << endl; cout << "//名称: " << t.name << endl; cout << "//标记: " << t.marks << endl; } int main(){ student a(1, "Alice", 80); student b(2, "Bob", 85); cout << "Before swapping:\n"; cout << "Student //答:\n"; print(a); cout << "Student b:\n"; print(b); //立即交换 swap(a, b); cout << "After swapping:\n"; cout << "Student //答:\n"; print(a); cout << "Student b:\n"; print(b); return 0; }
输出:
Before swapping: Student //答: //滚动: 1 //名称: Alice //标记: 80 Student b: //滚动: 2 //名称: Bob //标记: 85 After swapping: Student //答: //滚动: 2 //名称: Bob //标记: 85 Student b: //滚动: 1 //名称: Alice //标记: 80
3)在两个向量(容器)之间交换
在下面的示例中,我们将看到如何交换两个向量的内容。同样,我们可以交换任何容器的be / w对象。
#include <bits/stdc++.h> using namespace std; void print(vector<int> a) { for (auto it : a) { cout << it << " "; } cout << endl; } int main(){ vector<int> a{ 10, 20, 30, 40 }; vector<int> b{ 1, 2, 3, 4, 5, 6, 7 }; cout << "Before swapping:\n"; cout << "Vector //答:\n"; print(a); cout << "Vector b:\n"; print(b); //立即交换 swap(a, b); cout << "After swapping:\n"; cout << "Vector //答:\n"; print(a); cout << "Vector b:\n"; print(b); return 0; }
输出:
Before swapping: Vector //答: 10 20 30 40 Vector b: 1 2 3 4 5 6 7 After swapping: Vector //答: 1 2 3 4 5 6 7 Vector b: 10 20 30 40