Hướng dẫn cách xóa forward_list trong C++. Bạn sẽ học được cách sử dụng các hàm như hàm pop_front(), pop_back cũng như hàm forward_list erase_after C++ để xóa phần tử trong forward_list sau bài học này.
Chúng ta có 3 phương pháp để xóa forward_list trong C++ như sau:
- Hàm pop_front : Xóa phần tử đầu tiên trong forward_list
- forward_list erase_after C++: Xóa phần tử tại vị trí chỉ định
- Hàm erase_after(first, last): Xóa các phần tử trong phạm vi chỉ định
Lưu ý là khác với list thì do forward_list là danh sách một chiều nên không tồn tại hàm pop_back để thêm phần tử vào cuối forward_list.
Xóa phần tử đầu tiên trong forward_list C++ bằng pop_front
Hàm pop_front là một hàm thành viên trong class std:forward_list, có tác dụng xóa phần tử đầu tiên trong forward_list cũng như giảm độ dài của nó đi một đơn vị.
Cú pháp sử dụng hàm pop_front để xóa phần tử đầu tiên trong forward_list như sau:
f_lst.pop_front();
Trong đó f_lst
là tên forward_list cần xóa phần tử đầu tiên.
Ví dụ cụ thể:
|
Kết quả:
Before erase_after |
Có thể thấy phần tử đầu tiên trong forward_list là phần tử 3
đã bị xóa khỏi forward_list ban đầu.
Hàm pop_front thuộc kiểu void, do đó nó sẽ không trả giá trị. Bởi vậy nó sẽ xóa phần tử đầu tiên trong forward_list chứ không trả về phần tử đó. Trong trường hợp muốn lấy phần tử đầu tiên trong forward_list, hãy sử dụng tới hàm front để thay thế.
Ví dụ:
forward_list<int> f_lst{3, 1, 4, 1, 5}; |
Xóa 1 phần tử trong forward_list bằng hàm erase_after c++
erase_after trong c++ là một hàm thành viên trong class std:forward_list, có tác dụng xóa một hoặc nhiều phần tử trong forward_list C++ ở đằng sau vị trí chỉ định cũng như làm giảm độ dài tương ứng của nó.
Để xóa 1 phần tử tại vị trí chỉ định bằng hàm erase_after trong forward_list c++ chúng ta sử dụng cú pháp sau đây:
lst.erase_after(itr);
Trong đó lst
là forward_list ban đầu, và itr
là trình lặp trỏ đến vị trí cần xóa trong forward_list.
Ở đây trình lặp (iterator) là một vòng lặp có tác dụng giống như con trỏ, giúp truy cập đến các phần tử ở vị trí cụ thể trong forward_list.
Giống như Kiyoshi đã phân tích tại bài thêm chèn forward_list trong C++ thì để chuyển trình lặp chỉ đến vị trí index thứ n trong forward_list, chúng ta không thể đơn giản cộng vào n vào trình lặp, mà cần phải di chuyển lần lượt qua từng vị trí, bằng toán tử ++ với đủ số vòng lặp.
Ví dụ, trong trường hợp cần chỉ đến vị trí index thứ 5 trong forward_list, chúng ta sẽ viết trình lặp p như sau:
int n = 5; |
Sau khi đã dịch chuyển trình lặp tới vị trí chỉ định cần xóa phần tử, chúng ta có thể đơn giản sử dụng hàm erase_after để xóa giá trị ở đằng sau vị trí đó.
auto itr = lst.begin(); |
Ví dụ cụ thể:
|
Kết quả:
3 1 4 1 5 7 9 |
Xóa các phần tử trong một phạm vi chỉ định bằng forward_list erase_after c++
Chúng ta sử dụng forward_list erase_after c++ để xóa các phần tử trong một phạm vi chỉ định của một forward_list với cú pháp sau đây:
lst.erase_after( iterator_first, iterator_last);
Trong đó lst
là forward_list ban đầu, iterator_first
và iterator_last
là các trình lặp trỏ đến phạm vi bắt đầu và kết thúc xóa.
Lưu ý là phạm vi xóa sẽ được tính trong khoảng giữa iterator_first
và iterator_last
, nghĩa là phần tử ở vị trí iterator_first
và iterator_last
sẽ không bị xóa đi.
Và để chỉ định trình lặp tới các phạm vi đó thì chúng ta cũng sử dụng cách tăng tuần tự trình lặp như ở phần trên.
Ví dụ cụ thể:
|
Kết quả:
3 1 4 1 5 7 9 |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về cách xóa phần tử trong forward_list C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.
URL Link
HOME › lập trình c++ cơ bản dành cho người mới học lập trình>>21. forward_list trong c++