در C++، List یکی از ساختارهای دادهای STL است که به صورت Doubly Linked List پیادهسازی شده است.
به کمک List میتوان عناصر را به راحتی در ابتدا، انتها یا وسط اضافه و حذف کرد بدون تغییر اندیس بقیه عناصر.
🔹 1️⃣ ایجاد List
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> l1; // لیست خالی
list<int> l2 = {10, 20, 30}; // با مقداردهی اولیه
for(int x : l2)
cout << x << " "; // خروجی: 10 20 30
return 0;
}
🔹 2️⃣ اضافه کردن عناصر
list<int> l;
l.push_back(10); // اضافه به انتها
l.push_back(20);
l.push_front(5); // اضافه به ابتدا
for(int x : l)
cout << x << " "; // خروجی: 5 10 20
-
()push_back
→ اضافه به انتها -
()push_front
→ اضافه به ابتدا
🔹 3️⃣ حذف عناصر
l.pop_back(); // حذف آخرین عنصر
l.pop_front(); // حذف اولین عنصر
// حذف مقدار مشخص
l.remove(10); // حذف تمام عناصر با مقدار 10
🔹 4️⃣ دسترسی به عناصر
cout << l.front() << endl; // عنصر اول
cout << l.back() << endl; // عنصر آخر
List ندارد اندیس مستقیم، پس دسترسی به وسط لیست باید با Iterator انجام شود.
🔹 5️⃣ Iterator و حلقهها
list<int> l = {1, 2, 3, 4, 5};
// استفاده از Iterator
for(list<int>::iterator it = l.begin(); it != l.end(); ++it) {
cout << *it << " ";
}
// حلقه range-based هم ممکن است
for(int x : l) cout << x << " ";
🔹 6️⃣ درج و حذف در وسط
list<int> l = {1, 2, 4, 5};
auto it = l.begin();
advance(it, 2); // حرکت iterator به اندیس 2
l.insert(it, 3); // درج عدد 3 در وسط
l.erase(it); // حذف عنصر در موقعیت iterator
for(int x : l) cout << x << " "; // خروجی: 1 2 3 5
advance(it, n)
برای حرکت iterator به موقعیت nام استفاده میشود.
🔹 7️⃣ مرتبسازی و حذف تکراری
list<int> l = {4, 2, 5, 2, 1};
l.sort(); // مرتبسازی لیست
l.unique(); // حذف عناصر تکراری متوالی
for(int x : l)
cout << x << " "; // خروجی: 1 2 4 5
🔹 8️⃣ نکات کلیدی
-
List یک Doubly Linked List است، بنابراین اضافه و حذف در وسط سریع (
O(1)
). -
دسترسی با اندیس کند است (
O(n)
)، بهتر است با Iterator کار کنید. -
برای عملیات مرتبسازی و حذف تکراری، توابع آماده STL موجود است (
sort()
,unique()
). -
مناسب زمانی است که درج و حذف زیاد در وسط یا ابتدا/انتهای لیست داشته باشیم، نه دسترسی تصادفی با اندیس.
💡 خلاصه:
List در C++ برای مدیریت دادههایی که نیاز به درج و حذف سریع دارند بسیار مناسب است. استفاده از Iterator و توابع STL باعث کدنویسی راحت، خوانا و کارآمد میشود.