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

การแทรกข้อมูลใน STL List ของ C++

STL list รองรับการแทรกข้อมูลที่หน้า, หลัง และตำแหน่งใดๆ ได้อย่างมีประสิทธิภาพ O(1) หากมี Iterator อยู่แล้ว

เมธอดหลัก

  • push_front(val) - แทรกที่หน้า
  • push_back(val) - แทรกที่หลัง
  • insert(iterator, val) - แทรกที่ตำแหน่ง iterator

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

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

void display(list my_list) {
    for (auto it = my_list.begin(); it != my_list.end(); ++it)
        cout << *it << " ";
}

int main() {
    int arr[] = {10, 41, 54, 20, 23, 69, 84, 75};
    int n = sizeof(arr) / sizeof(arr[0]);

    list my_list;
    for (int i = 0; i < n; i++)
        my_list.push_back(arr[i]);

    cout << "List before insertion: ";
    display(my_list);

    // แทรก 100 ที่หน้า
    my_list.push_front(100);

    // แทรก 500 ที่หลัง
    my_list.push_back(500);

    // แทรก 1000 ที่ Index 5
    auto it = my_list.begin();
    advance(it, 5); // เคลื่อน iterator ไป 5 ตำแหน่ง
    my_list.insert(it, 1000);

    cout << "\nList after insertion: ";
    display(my_list);

    return 0;
}

ผลลัพธ์

List before insertion: 10 41 54 20 23 69 84 75
List after insertion: 100 10 41 54 20 1000 23 69 84 75 500

หมายเหตุ

  • advance(it, n) จาก <iterator> ใช้เลื่อน iterator
  • List ไม่รองรับ Random Access (ไม่สามารถทำ it + 5 ได้)
  • การแทรกที่กลางต้องเดิน Iterator ทีละตัว O(n)