Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm list::swap() trong C++ STL


Bài viết trình bày chức năng của hàm list::swap() trong C++ STL.

List trong STL là gì?

List là container cho phép chèn và xóa ở bất kỳ vị trí nào trong chuỗi với thời gian không đổi. List được triển khai dưới dạng danh sách liên kết đôi. List cho phép cấp phát bộ nhớ không liên tục. List hoạt động tốt hơn array, vector và deque khi chèn, trích xuất và di chuyển phần tử. Truy cập trực tiếp vào phần tử chậm hơn và list tương tự forward_list, nhưng forward_list là danh sách liên kết đơn chỉ lặp tiến.

swap() là gì?

Hàm này dùng để hoán đổi phần tử của một list với list khác, cả hai cùng kiểu dữ liệu và kích thước.

Cú pháp: listname1.swap(listname2)

Ví dụ

Input List1: 50 60 80 90 List2: 90 80 70 60
Output After swapping operation List1: 90 80 70 60 List2: 50 60 80 90
Input List1: 45 46 47 48 49 List2: 50 51 52 53 54
Output After swapping Operation List1: 50 51 52 53 54 List2: 45 46 47 48 49

Cách tiếp cận

  • Khởi tạo hai List.

  • In hai List.

  • Gọi swap().

  • In hai list sau khi hoán đổi.

Theo cách này có thể hoán đổi hai list.

Ví dụ hoàn chỉnh 1

// C++ code to demonstrate the working of list swap() function in STL
#include <iostream>
#include <list>
using namespace std;
int main() {
    // khởi tạo hai list
    list<int> list1 = { 10, 20, 30, 40, 50 };
    cout << " List1: ";
    for (auto x = list1.begin(); x != list1.end(); ++x)
        cout << *x << " ";
    list<int> list2 = { 40, 50, 60, 70, 80 };
    cout << " List2: ";
    for (auto x = list2.begin(); x != list2.end(); ++x)
        cout << *x << " ";
    // gọi swap()
    list1.swap(list2);
    cout << " After swapping List1 is : ";
    for (auto x = list1.begin(); x != list1.end(); ++x)
        cout << *x << " ";
    cout << " After swapping List2 is : ";
    for (auto x = list2.begin(); x != list2.end(); ++x)
        cout << *x << " ";
    return 0;
}

Kết quả

Input - List1: 10 20 30 40 50 List2: 40 50 60 70 80
Output - After swapping List1 is: 40 50 60 70 80
After swapping List2 is: 10 20 30 40 50

Ví dụ hoàn chỉnh 2

// C++ code to demonstrate the working of list swap() function in STL
#include <iostream>
#include <list>
using namespace std;
int main() {
    list<int> list1 = { 11, 12, 13, 14, 15 };
    cout << " List1: ";
    for (auto x = list1.begin(); x != list1.end(); ++x)
        cout << *x << " ";
    list<int> list2 = { 16, 17, 18, 19, 20 };
    cout << " List2: ";
    for (auto x = list2.begin(); x != list2.end(); ++x)
        cout << *x << " ";
    list1.swap(list2);
    cout << " After swapping List1 is : ";
    for (auto x = list1.begin(); x != list1.end(); ++x)
        cout << *x << " ";
    cout << " After swapping List2 is : ";
    for (auto x = list2.begin(); x != list2.end(); ++x)
        cout << *x << " ";
    return 0;
}

Kết quả

Input - List1: 11 12 13 14 15   List2: 16 17 18 19 20
Output - After swapping List1 is: 16 17 18 19 20   After swapping List2 is: 11 12 13 14 15