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

ฟังก์ชัน max_size() ของ forward_list ใน C++ STL

Forward List คืออะไร?

Forward list สามารถเข้าใจได้ว่าเป็น singly linked list (รายการเชื่อมโยงเดี่ยว) ที่สามารถติดตามได้เฉพาะทิศทางไปข้างหน้า (forward direction) ไม่สามารถย้อนกลับได้ (backward direction) ในขณะที่ list (doubly linked list) สามารถติดตามได้ทั้งสองทิศทาง เนื่องจากแต่ละองค์ประกอบมีลิงก์สองอัน: หนึ่งสำหรับองค์ประกอบถัดไป และอีกอันสำหรับองค์ประกอบก่อนหน้า Forward list จึงมีความเร็วสูงกว่า เนื่องจากต้องเก็บลิงก์เพียงอันเดียว (ไปข้างหน้า) การแทรกและลบข้อมูลใน forward list ใช้เวลาคงที่

forward_list::max_size() คืออะไร?

forward_list::max_size() เป็นฟังก์ชันใน C++ Standard Template Library (STL) ที่ใช้สำหรับ ตรวจสอบขนาดสูงสุดที่เป็นไปได้ ของ forward list (จำนวนองค์ประกอบสูงสุดที่คอนเทนเนอร์สามารถจุได้ภายใต้ข้อจำกัดของระบบและหน่วยความจำ)

แก้ไขข้อผิดพลาดจากต้นฉบับ: บทความต้นฉบับระบุผิดว่าเป็นฟังก์ชัน reverse() ซึ่งเป็นข้อมูลผิดพลาด บทความนี้อธิบายถึง max_size() อย่างถูกต้อง

ไวยากรณ์ (Syntax)

forwardlist_name.max_size()

พารามิเตอร์ (Parameter)

ฟังก์ชันนี้ไม่มีพารามิเตอร์

ค่าที่ส่งคืน (Return Value)

ส่งคืนค่า size_type ซึ่งเป็นจำนวนองค์ประกอบสูงสุดที่เป็นไปได้ (โดยปกติค่าจะใหญ่มาก เช่น 1152921504606846975 บนระบบ 64-bit)

ตัวอย่างการใช้งาน max_size()

#include <forward_list>
#include <iostream>
using namespace std;

int main() {
    // สร้าง forward list
    forward_list<int> myForwardList;
    // เพิ่มค่าให้ forward list (3 องค์ประกอบ ค่า 2)
    myForwardList.assign(3, 2);
    cout << "องค์ประกอบใน forward list ของฉันคือ: ";
    for (auto i = myForwardList.begin(); i != myForwardList.end(); i++)
        cout << *i << " ";
    cout << "\nขนาดสูงสุดของ Forward List ของฉันคือ: " << myForwardList.max_size();
    return 0;
}

ผลลัพธ์ (Output)

องค์ประกอบใน forward list ของฉันคือ: 2 2 2
ขนาดสูงสุดของ Forward List ของฉันคือ: 1152921504606846975

ตัวอย่างเพิ่มเติม: ตรวจสอบ max_size() ของลิสต์ว่าง

#include <forward_list>
#include <iostream>
using namespace std;

int main() {
    // สร้าง forward list ว่าง
    forward_list<int> myForwardList;
    cout << "\nขนาดสูงสุดของ forward list ว่างคือ: " << myForwardList.max_size();
    return 0;
}

ผลลัพธ์ (Output)

ขนาดสูงสุดของ forward list ว่างคือ: 1152921504606846975

สรุป: max_size() ไม่ได้บอกขนาดปัจจุบันของลิสต์ (ใช้ size() หรือนับด้วยการวนลูปแทน) แต่บอกขีดจำกัดทฤษฎีสูงสุดของคอนเทนเนอร์ ซึ่งขึ้นอยู่กับการจัดสรรหน่วยความจำของระบบ