Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวดำเนินการ operator= ใน C++ STL Set

ฟังก์ชัน operator= ถูกใช้ใน set เพื่อคัดลอก set หนึ่งไปยังอีก set หนึ่ง (หรือย้ายใน C++ STL) มันทำงานเหมือนการกำหนดค่าปกติ '=' สำหรับ set มี 3 รูปแบบที่ overloaded ดังนี้:

  • Copy :- set& operator= (const set& s1) - ฟังก์ชันนี้คัดลอกทุกสมาชิกใน set s1 ไปยัง set อื่น พารามิเตอร์ที่ส่งเข้าเป็น set ของชนิดเดียวกัน

    การใช้งาน - set s1 = s2;

  • Move :- set& operator=( set &&s1 ) - ฟังก์ชันนี้ย้ายสมาชิกของ set s1 เข้าไปใน set ที่เรียกใช้

  • Initializer list :- set& operator= (initializer_list<value_type> ilist) - รุ่นนี้คัดลอกค่าจาก initializer list ilist เข้าไปใน set ที่เรียกใช้

    การใช้งาน - set<int> s1 = { 1,2,3,4,5 };

หมายเหตุ - ทั้งสามรูปแบบคืนค่า reference ของ this pointer ของ set<T>

โปรแกรมต่อไปนี้สาธิตการใช้งานฟังก์ชัน operator= ในโปรแกรม C++

ตัวอย่าง

#include <iostream>
#include <set>
using namespace std;

int main() {
    set<int> set1, set2;
    
    // List initialization
    set1 = { 1, 2, 3, 4, 5 };
    set2 = { 10, 11, 12, 13 };
    
    // ก่อนคัดลอก
    cout << "set1 :";
    for (auto s = set1.begin(); s != set1.end(); ++s) {
        cout << *s << " ";
    }
    cout << endl;
    
    cout << "set2 :";
    for (auto s = set2.begin(); s != set2.end(); ++s) {
        cout << *s << " ";
    }
    
    // หลังคัดลอก set1 ไป set2
    cout << endl << "After Copy" << endl;
    cout << "set1 :";
    set1 = set2;
    for (auto s = set1.begin(); s != set1.end(); ++s) {
        cout << *s << " ";
    }
    return 0;
}

ผลลัพธ์

set1 :1 2 3 4 5 set2 :10 11 12 13 After Copy set1 :10 11 12 13