Hàm operator= dùng trong set để sao chép một set (hoặc di chuyển) sang set khác trong C++ STL. Nó hoạt động như phép gán bình thường cho set. Có ba dạng nạp chồng:
Sao chép (copy): set& operator= (const set& s1) - Sao chép tất cả phần tử từ set s1 sang set khác. Tham số là set cùng kiểu.
Sử dụng: set s1 = s2;
Di chuyển (move): set& operator=( set &&s1 ) - Di chuyển phần tử của s1 vào set gọi.
Danh sách khởi tạo (initializer list): set& operator= (initializer_list<value_type> ilist) - Sao chép giá trị từ danh sách khởi tạo vào set gọi.
Sử dụng: set<int> s1 = { 1,2,3,4,5 };
Lưu ý: Tất cả đều trả về tham chiếu con trỏ this kiểu set<T>.
Chương trình sau minh họa cách dùng operator= trong C++:
Ví dụ
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> set1, set2;
// Khởi tạo bằng danh sách
set1 = { 1, 2, 3, 4, 5 };
set2 = { 10, 11, 12, 13 };
// Trước khi sao chép
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 << " ";
}
// Sau khi sao chép set1 = set2
cout << endl << "Sau khi sao chép" << endl;
cout << "set1: ";
set1 = set2;
for (auto s = set1.begin(); s != set1.end(); ++s) {
cout << *s << " ";
}
return 0;
}
Đầu ra
set1: 1 2 3 4 5 set2: 10 11 12 13 Sau khi sao chép set1: 10 11 12 13