std::list::remove
#include <list>
void remove(const value_type& val);
Xóa tất cả các phần tử có giá trị bằng với một giá trị cho trước khỏi std::list.
Tham số
val
- Giá trị của các phần tử cần xóa.
Giá trị trả về
Không có giá trị trả về
Đặc điểm
- Xóa theo giá trị:
remove()
xóa tất cả các phần tử có giá trị bằngval
, không phải xóa theo vị trí. - Duyệt toàn bộ danh sách:
remove()
phải duyệt qua toàn bộ std::list để tìm các phần tử cần xóa. - Sử dụng toán tử
==
:remove()
sử dụng toán tử==
để so sánh giá trị của các phần tử vớival
. Do đó, kiểu phần tử của std::list phải hỗ trợ toán tử==
. - Không làm thay đổi vị trí tương đối của các phần tử còn lại:
remove()
chỉ xóa các phần tử có giá trị bằngval
, thứ tự tương đối của các phần tử còn lại được giữ nguyên. - Có thể làm thay đổi iterator: Thao tác xóa phần tử có thể làm thay đổi (invalidate) các iterator đang trỏ đến std::list.
- Phân biệt với
erase()
:erase()
xóa phần tử theo vị trí (iterator), cònremove()
xóa phần tử theo giá trị. - Để xóa các phần tử thỏa mãn điều kiện tổng quát hơn: Sử dụng
remove_if()
. - Không làm thay đổi kích thước tối đa:
remove()
không làm thay đổi giá trị trả về bởimax_size()
. - Độ phức tạp: Độ phức tạp của
remove()
làO(n)
, với n là số phần tử trong std::list.
Ví dụ
#include <iostream>
#include <list>
int main() {
std::list<int> mylist = {10, 20, 10, 30, 40, 10, 50};
mylist.remove(10); // Xóa tất cả các phần tử có giá trị bằng 10
std::cout << "mylist after remove(10):";
for (int x : mylist) std::cout << ' ' << x; // Output: mylist after remove(10): 20 30 40 50
std::cout << '\n';
return 0;
}
#include <iostream>
#include <list>
#include <string>
int main() {
std::list<std::string> mylist = {"apple", "banana", "apple", "orange", "apple"};
mylist.remove("apple"); // Xóa tất cả các chuỗi "apple"
std::cout << "mylist after remove(\"apple\") :";
for (const std::string& str : mylist) std::cout << ' ' << str; // Output: mylist after remove("apple") : banana orange
std::cout << '\n';
return 0;
}
Các hàm liên quan
remove_if | Xóa tất cả các phần tử thỏa mãn một điều kiện cụ thể khỏi std::list |
erase | Xóa một hoặc nhiều phần tử khỏi std::list tại một vị trí cụ thể hoặc trong một phạm vi |
unique | Xóa các phần tử trùng lặp liên tiếp khỏi std::list |
pop_back | Xóa phần tử cuối cùng của std::list |
pop_front | Xóa phần tử đầu tiên của std::list |