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

list::emplace_front() และ list::emplace_back() ใน C++ STL


ในบทความนี้เราจะอธิบายการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน list::emplace_front() และ list::emplace_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::emplace_front() คืออะไร?

list::emplace_front() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศใน header file <list> ฟังก์ชันนี้ใช้สำหรับ สร้างและแทรก (emplace) องค์ประกอบที่จุดเริ่มต้น (front) ของ list container หาก container ว่าง จะแทรกที่ตำแหน่งแรกและกลายเป็นองค์ประกอบแรก หากมีองค์ประกอบอยู่แล้ว จะแทรกที่หน้า และองค์ประกอบเดิมที่อยู่หน้าจะกลายเป็นองค์ประกอบที่สอง ฟังก์ชันนี้เพิ่มขนาดของ container ขึ้น 1

ไวยากรณ์ (Syntax)

listname.emplace_front(const value_type& element);
listname.emplace_front(value_type&& element);

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

รับพารามิเตอร์หนึ่งคือองค์ประกอบที่ต้องการ emplace/insert

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

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

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

Input: list<int> mylist = {1, 2, 3, 4};
mylist.emplace_front(0);
Output: List elements are = 0 1 2 3 4

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

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

int main() {
    list<int> List;
    List.emplace_front(10);
    List.emplace_front(20);
    List.emplace_front(30);
    List.emplace_front(40);
    List.emplace_front(50);
    List.emplace_front(60);
    
    cout << "Elements are : ";
    for(auto i = List.begin(); i != List.end(); ++i)
        cout << ' ' << *i;
    return 0;
}

ผลลัพธ์ (Output)

Elements are : 60 50 40 30 20 10

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

list::emplace_back() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศใน header file <list> ฟังก์ชันนี้ใช้สำหรับ สร้างและแทรก (emplace) องค์ประกอบที่จุดสิ้นสุด (back/end) ของ list container หาก container ว่าง จะแทรกอย่างง่ายและขนาดกลายเป็น 1 หากมีองค์ประกอบอยู่แล้ว จะแทรกที่ท้าย ฟังก์ชันนี้เพิ่มขนาดของ container ขึ้น 1

ไวยากรณ์ (Syntax)

listname.emplace_back(const value_type& element);
listname.emplace_back(value_type&& element);

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

รับพารามิเตอร์หนึ่งคือองค์ประกอบที่ต้องการ emplace/insert

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

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

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

Input: list<int> list1 = {1, 2, 3, 4};
list1.emplace_back(5);
Output: List: 1 2 3 4 5

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

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

int main() {
    list<int> List;
    List.emplace_back(10);
    List.emplace_back(20);
    List.emplace_back(30);
    List.emplace_back(40);
    List.emplace_back(50);
    List.emplace_back(60);
    
    cout << "elements are : ";
    for(auto i = List.begin(); i != List.end(); ++i)
        cout << ' ' << *i;
    return 0;
}

ผลลัพธ์ (Output)

Elements are : 10 20 30 40 50 60