List ใน STL คืออะไร?
List เป็นโครงสร้างข้อมูลที่อนุญาตให้แทรกและลบข้อมูลได้ในเวลาคงที่ทุกตำแหน่งในลำดับ List ถูกนำมาใช้งานเป็น doubly linked list (รายการเชื่อมโยงคู่) List อนุญาตการจัดสรรหน่วยความจำแบบไม่ต่อเนื่อง (non-contiguous memory allocation) List ทำงานได้ดีกว่า array, vector และ deque ในการแทรก ดึงออก และย้ายองค์ประกอบในตำแหน่งใดๆ ในคอนเทนเนอร์ ใน List การเข้าถึงองค์ประกอบโดยตรง (random access) ช้ากว่า และ list คล้ายกับ forward_list แต่ forward_list เป็น singly linked list และสามารถวนลูปได้เฉพาะทิศทางไปข้างหน้าเท่านั้น
list::empty() คืออะไร?
list::empty() เป็นฟังก์ชันในตัวใน C++ STL ที่ประกาศในไฟล์หัวข้อ <list> ฟังก์ชัน list::empty() ตรวจสอบว่าคอนเทนเนอร์ list ที่กำหนดว่างเปล่า (ขนาดเป็น 0) หรือไม่ และส่งคืนค่า true หากลิสต์ว่างเปล่า และ false หากลิสต์ไม่ว่างเปล่า
ไวยากรณ์ (Syntax)
bool list_name.empty();
ฟังก์ชันนี้ไม่รับค่าพารามิเตอร์
ค่าที่ส่งคืน (Return Value)
ส่งคืน true หากขนาดของคอนเทนเนอร์เป็นศูนย์ และ false หากขนาดของคอนเทนเนอร์ไม่เป็นศูนย์
ตัวอย่างการใช้งาน empty()
#include <list>
#include <iostream>
using namespace std;
int main() {
list<int> myList; // สร้างลิสต์
// เรียก empty() เพื่อตรวจสอบว่าลิสต์ว่างหรือไม่
if (myList.empty())
cout << "ลิสต์ของฉันว่างเปล่า\n";
else
cout << "ลิสต์ของฉันไม่ว่างเปล่า\n";
// push_back() ใช้แทรกองค์ประกอบในลิสต์
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
myList.push_back(4);
if (myList.empty())
cout << "ลิสต์ของฉันว่างเปล่า\n";
else
cout << "ลิสต์ของฉันไม่ว่างเปล่า\n";
return 0;
}
ผลลัพธ์ (Output)
ลิสต์ของฉันว่างเปล่า ลิสต์ของฉันไม่ว่างเปล่า
ตัวอย่างประยุกต์: คำนวณผลคูณ 1-10 ด้วยการใช้ empty()
#include <list>
#include <iostream>
using namespace std;
int main() {
list<int> myList;
long long product = 1; // เริ่มต้นที่ 1 ไม่ใช่ 0 (โค้ดต้นฉบับมีบั๊ก)
for (int i = 1; i <= 10; ++i)
myList.push_back(i);
while (!myList.empty()) {
product *= myList.front();
myList.pop_front();
}
cout << "ผลคูณของตัวเลข 1-10 คือ: " << product << '\n';
return 0;
}
ผลลัพธ์ (Output)
ผลคูณของตัวเลข 1-10 คือ: 3628800
หมายเหตุ: โค้ดต้นฉบับมีบั๊กที่กำหนด int product = 0; ทำให้ผลคูณออกมาเป็น 0 เสมอ ได้แก้ไขเป็น long long product = 1; แล้วในตัวอย่างนี้