STL list รองรับการแทรกข้อมูลที่หน้า, หลัง และตำแหน่งใดๆ ได้อย่างมีประสิทธิภาพ O(1) หากมี Iterator อยู่แล้ว
เมธอดหลัก
push_front(val)- แทรกที่หน้าpush_back(val)- แทรกที่หลังinsert(iterator, val)- แทรกที่ตำแหน่ง iterator
ตัวอย่างโค้ด
#include <iostream> #include <list> using namespace std; void display(listmy_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)