Computer >> Máy Tính >  >> Lập trình >> C ++

forward_list ::cbefore_begin () trong C ++ STL

Given là nhiệm vụ để hiển thị hoạt động của hàm forward_list ::cbefore_begin () trong C ++.

Danh sách chuyển tiếp chỉ giữ liên kết với phần tử tiếp theo không giống như danh sách bình thường giữ liên kết với phần tử tiếp theo cũng như trước đó, giúp lặp lại theo cả hai hướng. Nhưng forward_list chỉ có thể lặp lại theo hướng phía trước.

Hàm forward_list ::cbefore_begin () là một phần của thư viện mẫu chuẩn C ++. Nó được sử dụng để lấy vị trí trước phần tử đầu tiên của danh sách.

Tệp tiêu đề nên được bao gồm để gọi hàm này.

Cú pháp

Forward_List_Name.cbefore_begin();

Tham số

Hàm không chấp nhận bất kỳ tham số nào.

Giá trị trả lại

Hàm trả về một trình lặp không đổi trỏ đến vị trí trước phần tử đầu tiên của forward_list.

Ví dụ

Input: 8, 9, 32, 21
Output: 56 8 9 32 21

Giải thích - Ở đây chúng ta đã tạo một danh sách chuyển tiếp với các phần tử 8,9,32,21. Sau đó, chúng tôi gọi hàm cbefore_begin () trỏ đến vị trí trước phần tử đầu tiên của danh sách và lưu trữ vị trí đó trong trình lặp itr. Sau đó, chúng tôi sử dụng hàm insert_ after () để chèn phần tử 56 vào vị trí trước phần tử đầu tiên, đó là 8. Vì vậy, khi chúng tôi in nó, đầu ra được tạo ra là 56 8 9 32 21, điều này cho thấy rằng 56 ở đầu danh sách và do đó hàm cbefore_begin () hoạt động chính xác.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -

  • Đầu tiên, hãy tạo một forward_list, chúng ta hãy nói "Lt" thuộc loại int và gán một số giá trị cho nó.
  • Sau đó, tạo một đối tượng “itr” kiểu tự động và lưu trữ trong đó, trình vòng lặp được trả về bằng cách gọi hàm cbefore_begin ().
  • Sau đó, sử dụng hàm insert_ after () để chèn một phần tử mới vào đầu danh sách. Chuyển trình lặp “itr” làm đối số đầu tiên và số sẽ được chèn làm đối số thứ hai.
  • Sau đó, bắt đầu vòng lặp For để in danh sách
  • Sau đó, tạo một đối tượng “itr” kiểu auto bên trong vòng lặp for để nhận các giá trị trả về của hàm end () và begin (). Khởi tạo “itr” bằng cách đưa nó vào phần tử đầu tiên của danh sách bằng hàm begin ().
  • Sau đó chỉ định điều kiện kết thúc của vòng lặp for bằng cách viết “itr” không bằng phần tử cuối cùng của danh sách bằng cách sử dụng hàm cend ().
  • In * itr.

Thuật toán

Start
Step 1->In function main()
   Initialize forward_list<int> Lt={}
   Initialize auto itr= Lt.cbefore_begin()
   Call insert_after(itr, new_element)
   Loop For auto itr = Ltcbegin() and itr != Lt.end() and itr++
   Print *itr
   End
Stop

Ví dụ

#include<iostream>
#include<forward_list>
using namespace std;
int main() {
   forward_list<int> Lt = { 40, 55, 67, 89 };
   auto itr = Lt.cbefore_begin();
   Lt.insert_after(itr, 77);
   for (auto itr = Lt.begin(); it != Lt.end(); ++itr)
   cout << *itr << " ";
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

77 40 55 67 89