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() หรือนับด้วยการวนลูปแทน) แต่บอกขีดจำกัดทฤษฎีสูงสุดของคอนเทนเนอร์ ซึ่งขึ้นอยู่กับการจัดสรรหน่วยความจำของระบบ