當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ std::swap()用法及代碼示例


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:" << a << ", b:" << b << endl;

    //swap now
    swap(a, b);

    cout << "After swapping:\n";
    cout << "a:" << a << ", b:" << b << endl;

    return 0;
}

輸出:

Before swapping:
a:10, b:20
After swapping:
a:20, b:10

2) 交換兩個用戶定義的對象

在下麵的例子中,我們看到如何使用 std::swap() 函數交換兩個用戶定義的對象。在這裏,我們定義了一個學生類,因為我們看到了 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 << "Roll:" << t.roll << endl;
    cout << "Name:" << t.name << endl;
    cout << "Marks:" << t.marks << endl;
}

int main()
{
    student a(1, "Alice", 80);
    student b(2, "Bob", 85);

    cout << "Before swapping:\n";
    cout << "Student a:\n";
    print(a);
    cout << "Student b:\n";
    print(b);

    //swap now
    swap(a, b);

    cout << "After swapping:\n";
    cout << "Student a:\n";
    print(a);
    cout << "Student b:\n";
    print(b);

    return 0;
}

輸出:

Before swapping:
Student a:
Roll:1
Name:Alice
Marks:80
Student b:
Roll:2
Name:Bob
Marks:85
After swapping:
Student a:
Roll:2
Name:Bob
Marks:85
Student b:
Roll:1
Name:Alice
Marks: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 a:\n";
    print(a);
    cout << "Vector b:\n";
    print(b);

    //swap now
    swap(a, b);

    cout << "After swapping:\n";
    cout << "Vector a:\n";
    print(a);
    cout << "Vector b:\n";
    print(b);

    return 0;
}

輸出:

Before swapping:
Vector a:
10 20 30 40 
Vector b:
1 2 3 4 5 6 7 
After swapping:
Vector a:
1 2 3 4 5 6 7 
Vector b:
10 20 30 40 


相關用法


注:本文由純淨天空篩選整理自 std::swap() function with example in C++ STL。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。