std :: swap()函数以及C ++ STL中的示例

std :: swap()

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