Hướng dẫn cách thêm chèn forward_list trong C++. Bạn sẽ học được cách thêm và chèn phần tử vào forward_list trong C++ sau bài học này.
Chúng ta có 2 phương pháp để thêm hoặc chèn forward_list trong C++ như sau:
- Hàm push_front : thêm phần tử vào đầu forward_list
- Hàm insert_after: thêm phần tử vào vị trí bất kỳ trong forward_list
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 push_back để thêm phần tử vào cuối forward_list.
Thêm phần tử vào đầu forward_list C++ bằng hàm push_front
Hàm push_front là một hàm thành viên trong class std:forward_list, có tác dụng thêm một phần tử vào vị trí đầu tiên trong forward_list cũng như tăng độ dài của nó thêm một đơn vị.
Cú pháp sử dụng hàm push_front để thêm phần tử vào đầu forward_list như sau:
f_lst.push_front(value);
Trong đó f_lst
là tên forward_list cần thêm phần tử value
vào vị trí đầu tiên. Nếu phần tử thêm vào có kiểu khác với kiểu của forward_list thì nó sẽ được chuyển về kiểu của forward_list trước khi được thêm vào.
Hàm push_front thuộc kiểu void, do đó nó sẽ không trả giá trị. Bởi vậy nó sẽ thêm phần tử vào vị trí đầu tiên trong forward_list chứ không trả về chuỗi kết quả.
Ví dụ cụ thể:
|
Kết quả:
3 1 4 1 5 7 9 |
Có thể thấy phần tử 88 đã được thêm vào vị trí đầu tiên trong chuỗi ban đầu.
Lưu ý, nếu phần tử thêm vào có kiểu khác với kiểu của forward_list thì nó sẽ được chuyển về kiểu của forward_list trước khi được thêm vào. Ví dụ nếu thêm một ký tự vào một forward_list thuộc kiểu int, thì ký tự đó sẽ được chuyển về mã Unicode trước khi được thêm vào forward_list ban đầu như sau:
forward_list<int> f_lst{3, 1, 4, 1, 5, 7, 9}; |
Do mã Unicode của ký tự ‘a’ là 97 nên nó đã được chuyển về dạng int là 97, rồi mới được thêm vào forward_list ban đầu như trên.
Chèn 1 phần tử vào vị trí chỉ định trong forward_list C++ bằng hàm insert_after
Hàm insert_after là một hàm thành viên trong class std:list, có tác dụng chèn một hoặc nhiều phần tử vào đằng sau vị trí chỉ định trong list cũng như tăng độ dài tương ứng của nó.
Để chèn phần tử vào vị trí chỉ định trong forward_list C++, chúng ta sử dụng hàm insert_after với cú pháp sau đây:
lst.insert_after(itr, value);
Trong đó lst
là forward_list ban đầu, value
là phần tử cần chèn, và itr
là trình lặp (iterator) trỏ đến vị trí cần chèn 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.
Chúng ta có thể lấy trình lặp trỏ đến vị trí đầu tiên trong forward_list bằng hàm begin() cũng như giá trị tại đó như sau:
std::forward_list<int> lst{3, 4, 3, 2, 4, 3, 1}; |
Khác với vector hay map, do trong forward_list chúng ta không thể truy cập vào vị trí ngẫu nhiên trong nó, nên để thay đổi 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 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 chèn phần tử, chúng ta có thể đơn giản sử dụng hàm insert_after để chèn giá trị cần thiết vào đằng sau vị trí đó.
auto itr = lst.begin(); |
Ví dụ cụ thể:
|
Kết quả:
3 1 4 55 1 5 7 9 |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về cách thêm chèn phần tử vào forward_list trong 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++