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

ฟังก์ชัน empty() ของ list ใน C++ STL

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; แล้วในตัวอย่างนี้