std::forward_list::remove
#include <forward_list>
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 forward_list.
void remove(const value_type& val);
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ộ forward_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 forward_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 forward_list.
- Phân biệt với
erase_after():erase_after()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(). - Độ phức tạp: Độ phức tạp của
remove()làO(n), với n là số phần tử trong forward_list.
Ví dụ
#include <iostream>
#include <forward_list>
int main() {
std::forward_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 <forward_list>
#include <string>
int main() {
std::forward_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 forward_list |
| erase_after | Xóa một hoặc nhiều phần tử khỏi forward_list tại vị trí sau một iterator cho trước |
| unique | Xóa các phần tử trùng lặp liên tiếp khỏi forward_list |
| pop_front | Xóa phần tử đầu tiên của forward_list |