Bài viết trình bày chức năng của toán tử list::operator= 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.
Công dụng của operator=?
Toán tử này dùng để gán các phần tử mới cho list bằng cách thay thế các phần tử hiện có. Nó cũng thay đổi kích thước list mới theo nội dung. Container nguồn cung cấp phần tử mới phải có cùng kiểu dữ liệu.
Cú pháp: listname1 = listname2
Ví dụ
Input List1: 50 60 80 90 List2: 90 80 70 60 Output List1: 90 80 70 60 Input List1: E N E R G Y List2: C A P T I O N Output List1: C A P T I O N
Cách tiếp cận
Khởi tạo hai List.
Sử dụng toán tử =.
In list mới.
Cách hoạt động tương tự swap(), nhưng toán tử này chỉ gán nội dung list2 cho list1, không hoán đổi ngược lại.
Ví dụ hoàn chỉnh 1
// C++ code to demonstrate the working of list = operator 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 << " ";
list1 = list2;
// in nội dung mới của list
cout << " New contents of List1 is : ";
for (auto x = list1.begin(); x != list1.end(); ++x)
cout << *x << " ";
return 0;
}
Kết quả
Input - List1: 10 20 30 40 50 List2: 40 50 60 70 80 Output - New content of List1 is: 40 50 60 70 80
Ví dụ hoàn chỉnh 2 (char)
// C++ code to demonstrate the working of list = operator in STL
#include <iostream>
#include <list>
using namespace std;
int main() {
list<char> list1 = { 'C', 'H', 'A', 'R', 'G', 'E', 'R' };
cout << " List1: ";
for (auto x = list1.begin(); x != list1.end(); ++x)
cout << *x << " ";
list<char> list2 = { 'P', 'O', 'I', 'N', 'T' };
cout << " List2: ";
for (auto x = list2.begin(); x != list2.end(); ++x)
cout << *x << " ";
list1 = list2;
cout << " New contents of List1 is : ";
for (auto x = list1.begin(); x != list1.end(); ++x)
cout << *x << " ";
return 0;
}
Kết quả
Input - List1: C H A R G E R List2: P O I N T Output - New contents of List1 is: P O I N T