Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

forward_list::cbefore_begin() ใน C++ STL

บทนำ

งานนี้แสดงการทำงานของ forward_list::cbefore_begin() ใน C++

forward_list เก็บลิงก์เฉพาะอิลิเมนต์ถัดไป ไม่เหมือน list ธรรมดา วนลูปได้เฉพาะทิศทางหน้า

forward_list::cbefore_begin() เป็นส่วนหนึ่งของ C++ STL ใช้เพื่อรับตำแหน่งก่อนอิลิเมนต์แรกของลิสต์

ต้อง include <forward_list>

Syntax

Forward_List_Name.cbefore_begin();

Parameters

ไม่รับพารามิเตอร์

Return Value

คืนค่า Constant Iterator ที่ชี้ตำแหน่งก่อนอิลิเมนต์แรกของ forward_list

ตัวอย่าง

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

คำอธิบาย - สร้าง forward list = {8, 9, 32, 21} เรียก cbefore_begin() ได้ iterator ชี้ก่อนตัวแรก (8) ใช้ insert_after() แทรก 56 ที่ตำแหน่งนั้น ได้ 56 8 9 32 21

แนวทางในโปรแกรม

  • สร้าง forward_list Lt ประเภท int กำหนดค่า
  • สร้าง iterator itr = Lt.cbefore_begin()
  • ใช้ insert_after(itr, new_element) แทรกอิลิเมนต์ใหม่หน้าสุด
  • วนลูปพิมพ์ลิสต์

อัลกอริทึม

Start
Step 1 → In main()
    Initialize forward_list<int> Lt = {}
    Initialize auto itr = Lt.cbefore_begin()
    Call insert_after(itr, new_element)
    Loop for auto itr = Lt.cbegin() to itr != Lt.end() itr++
    Print *itr
End
Stop

ตัวอย่างโค้ด

#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.cbegin(); itr != Lt.end(); ++itr)
        cout << *itr << " ";
    return 0;
}

ผลลัพธ์

77 40 55 67 89

คำอธิบายเพิ่มเติม

cbefore_begin() คืนค่า const_iterator ไม่สามารถแก้ไขค่าผ่าน iterator นี้ได้ ใช้ร่วมกับ insert_after() เพื่อแทรกที่หน้าสุด (เพราะ forward_list ไม่มี insert_before)