C++ Data Structures and STL

در C++، Data Structures (ساختارهای داده‌ای) برای ذخیره و مدیریت داده‌ها استفاده می‌شوند و STL (Standard Template Library) مجموعه‌ای از کلاس‌ها و توابع عمومی برای کار با این ساختارهاست. STL باعث می‌شود بدون نوشتن کد طولانی، داده‌ها را به راحتی ذخیره، مرتب و پردازش کنیم.

🔹 1️⃣ ساختارهای داده‌ای اصلی در C++

ساختار داده‌ایتوضیح
Arrayآرایه ثابت با طول مشخص
Vectorآرایهٔ پویا، اندازه قابل تغییر
DequeDouble-ended queue، اضافه/حذف از ابتدا و انتها
Listلیست پیوندی (Doubly Linked List)
Stackساختار LIFO (Last In First Out)
Queueساختار FIFO (First In First Out)
Priority Queueصف با اولویت، عناصر بزرگ یا کوچک در اول
Mapمجموعه کلید-مقدار با کلید یکتا
Setمجموعه از عناصر یکتا و مرتب
Unordered Map/Setکلید-مقدار بدون مرتب‌سازی (Hash Table)

🔹 2️⃣ Vector (آرایه پویا)

#include <iostream> #include <vector> using namespace std; int main() { vector<int> v = {1, 2, 3}; v.push_back(4); // اضافه کردن عنصر v.pop_back(); // حذف آخرین عنصر for(int i : v) { cout << i << " "; } return 0; }

📌 خروجی:

1 2 3

🔹 3️⃣ List (لیست پیوندی)

#include <iostream> #include <list> using namespace std; int main() { list<int> l = {10, 20, 30}; l.push_front(5); // اضافه به ابتدا l.push_back(40); // اضافه به انتها for(int x : l) cout << x << " "; return 0; }

📌 خروجی:

5 10 20 30 40

🔹 4️⃣ Stack (پشته)

#include <iostream> #include <stack> using namespace std; int main() { stack<int> s; s.push(1); s.push(2); s.push(3); while(!s.empty()) { cout << s.top() << " "; // نمایش آخرین عنصر s.pop(); // حذف آخرین عنصر } return 0; }

📌 خروجی:

3 2 1

🔹 5️⃣ Queue (صف)

#include <iostream> #include <queue> using namespace std; int main() { queue<int> q; q.push(1); q.push(2); q.push(3); while(!q.empty()) { cout << q.front() << " "; // نمایش اولین عنصر q.pop(); // حذف اولین عنصر } return 0; }

📌 خروجی:

1 2 3

🔹 6️⃣ Map (کلید-مقدار)

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m; m["Alice"] = 25; m["Bob"] = 30; for(auto &p : m) { cout << p.first << ": " << p.second << endl; } return 0; }

📌 خروجی:

Alice: 25 Bob: 30

🔹 7️⃣ Set (مجموعه مرتب)

#include <iostream> #include <set> using namespace std; int main() { set<int> s = {5, 1, 3, 5}; // عنصر تکراری حذف می‌شود for(int x : s) cout << x << " "; return 0; }

📌 خروجی:

1 3 5

🔹 8️⃣ نکات کلیدی STL

  • همهٔ کلاس‌ها Generic هستند و می‌توانند انواع مختلف داده بگیرند.

  • STL شامل الگوریتم‌های آماده مثل sort, reverse, find, binary_search است.

  • استفاده از STL باعث کاهش کدهای دستی و افزایش کارایی و خوانایی برنامه می‌شود.

  • انتخاب ساختار داده‌ای مناسب مهم است: Vector برای دسترسی سریع به اندیس‌ها، List برای اضافه/حذف سریع وسط، Map/Set برای جستجوی سریع کلید.

💡 خلاصه:
STL در ++C ترکیبی از ساختارهای داده‌ای و الگوریتم‌ها است که برنامه‌نویسی سریع، امن و انعطاف‌پذیر را ممکن می‌کند و پایهٔ اکثر برنامه‌های حرفه‌ای و کتابخانه‌های استاندارد است.