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

list::pop_front() และ list::pop_back() ใน C++ STL


ในบทความนี้เราจะอธิบายการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน list::pop_front() และ list::pop_back() ใน C++ Standard Template Library (STL)

List ใน STL คืออะไร?

List เป็นโครงสร้างข้อมูลที่รองรับการแทรกและลบข้อมูลได้ในเวลาคงที่ (constant time) ที่ตำแหน่งใดก็ได้ในลำดับ List ถูกนำไปใช้งานเป็น doubly linked list (รายการเชื่อมโยงสองทิศทาง) ทำให้จัดสรรหน่วยความจำแบบไม่ต่อเนื่องได้ List ให้ประสิทธิภาพการแทรก ดึง และย้ายข้อมูลที่ตำแหน่งใดก็ได้ในคอนเทนเนอร์ดีกว่า array, vector และ deque อย่างไรก็ตาม การเข้าถึงข้อมูลโดยตรง (random access) ใน List ช้ากว่า และ List คล้ายกับ forward_list แต่ forward_list เป็น singly linked list (รายการเชื่อมโยงทิศทางเดียว) จึงวนลูปได้เฉพาะทิศทางไปข้างหน้าเท่านั้น

list::pop_front() คืออะไร?

list::pop_front() เป็นฟังก์ชันในตัว (built-in) ของ C++ STL ที่ประกาศในไฟล์ header <list> ฟังก์ชันนี้ใช้สำหรับนำเอาออก (pop/remove) องค์ประกอบที่อยู่ ด้านหน้า (จุดเริ่มต้น) ของ list เมื่อเรียกใช้งาน องค์ประกอบตัวแรกจะถูกลบออกจากคอนเทนเนอร์ และองค์ประกอบถัดไปจะกลายเป็นองค์ประกอบแรกใหม่ ขนาดของคอนเทนเนอร์จะลดลง 1

ไวยากรณ์ (Syntax)

list_container.pop_front();

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

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

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

ฟังก์ชันนี้ไม่ส่งคืนค่าใดๆ (void)

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

Input: list<int> List_container = {10, 11, 13, 15};
List_container.pop_front();
Output: List = 11 13 15

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

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

int main() {
    list<int> myList_1 = {}, myList_2 = {};
    myList_1.push_front(10);
    myList_1.push_front(20);
    myList_1.push_front(30);
    myList_1.push_front(40);
    myList_1.push_front(50);
    
    while (!myList_1.empty()) {
        myList_2.push_front(myList_1.front());
        myList_1.pop_front();
    }
    
    cout << "Elements in the list are : ";
    for (auto i = myList_2.begin(); i != myList_2.end(); ++i)
        cout << ' ' << *i;
}

ผลลัพธ์ (Output)

หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้:

Elements in the list are : 10 20 30 40 50

list::pop_back() คืออะไร?

list::pop_back() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศในไฟล์ header <list> ฟังก์ชันนี้ใช้สำหรับนำเอาออก (pop/remove) องค์ประกอบจาก ด้านหลัง (จุดสิ้นสุด) ของ list container เมื่อเรียกใช้งาน องค์ประกอบตัวสุดท้ายจะถูกลบออก และองค์ประกอบก่อนหน้าจะกลายเป็นองค์ประกอบสุดท้ายใหม่ ขนาดของ list จะลดลง 1

ไวยากรณ์ (Syntax)

list_container.pop_back();

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

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

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

ฟังก์ชันนี้ไม่ส่งคืนค่าใดๆ (void)

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

Input: list<int> List_container = {10, 11, 13, 15};
List_container.pop_back();
Output: List = 10 11 13

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

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

int main() {
    list<int> myList_1 = {}, myList_2 = {};
    myList_1.push_front(10);
    myList_1.push_front(20);
    myList_1.push_front(30);
    myList_1.push_front(40);
    myList_1.push_front(50);
    
    while (!myList_1.empty()) {
        myList_2.push_front(myList_1.back());
        myList_1.pop_back();
    }
    
    cout << "Elements in the list are : ";
    for (auto i = myList_2.begin(); i != myList_2.end(); ++i)
        cout << ' ' << *i;
}

ผลลัพธ์ (Output)

หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้:

Elements in the list are : 50 40 30 20 10