Bài viết thảo luận về cách hoạt động, cú pháp và ví dụ của hàm list::clear() trong C++.
List trong STL là gì?
List là cấu trúc dữ liệu cho phép chèn và xóa ở bất kỳ vị trí nào trong 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 hiệu quả hơn array, vector, deque về chèn, xóa, di chuyển phần tử. Truy cập trực tiếp phần tử trong list chậm hơn, list tương tự forward_list nhưng forward_list là danh sách liên kết đơn chỉ duyệt được một chiều.
clear() là gì?
list::clear() là hàm built-in trong C++ STL, khai báo trong header <list>. Hàm này xóa toàn bộ phần tử trong list container, để container với size = 0.
Cú pháp
list_name.clear();
Hàm không nhận tham số.
Giá trị trả về
Hàm không trả về giá trị, chỉ xóa tất cả phần tử khỏi container.
Ví dụ 1
Chèn phần tử vào list rồi dùng clear() xóa toàn bộ list.
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> myList = {10, 20, 30, 40, 50};
cout << "List before applying clear() function: ";
for(auto i = myList.begin(); i != myList.end(); ++i)
cout << ' ' << *i;
myList.clear();
for(auto i = myList.begin(); i != myList.end(); ++i)
cout << ' ' << *i;
cout << "\nlist is cleared";
return 0;
}
Kết quả
List before applying clear() function: 10 20 30 40 50 list is cleared
Ví dụ 2
Xóa list bằng clear() rồi chèn lại phần tử mới.
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> myList;
myList.push_back(10);
myList.push_back(20);
myList.push_back(30);
cout << "List before applying clear() function: ";
for(auto i = myList.begin(); i != myList.end(); ++i)
cout << ' ' << *i;
myList.clear();
for(auto i = myList.begin(); i != myList.end(); ++i)
cout << ' ' << *i;
cout << "\nlist is cleared";
myList.push_back(60);
myList.push_back(70);
cout << "\nelements in my list are: ";
for(auto i = myList.begin(); i != myList.end(); ++i)
cout << ' ' << *i;
return 0;
}
Kết quả
List before applying clear() function: 10 20 30 40 50 list is cleared Elements in my list are: 60 70