C++ List

در 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 باعث کدنویسی راحت، خوانا و کارآمد می‌شود.