کتابخانه استاندارد (STL)
آشنایی با کتابخانه استاندارد C++ (STL) و کامپوننتهای اصلی آن
کتابخانه استاندارد (STL)
کتابخانه استاندارد (Standard Template Library) مجموعهای از کلاسها و توابع آماده است که کار با ساختارهای داده و الگوریتمها را آسان میکند.
کامپوننتهای STL
| کامپوننت | توضیح |
|---|---|
| Containers | کلاسهای ذخیرهسازی داده |
| Iterators | برای پیمایش کانتینرها |
| Algorithms | توابع برای عملیات روی دادهها |
| Function Objects | اشیاء قابل فراخوانی |
کانتینرهای توالی (Sequence Containers)
vector
#include <vector>
vector<int> numbers = {1, 2, 3, 4, 5};
numbers.push_back(6); // افزودن به انتها
numbers.pop_back(); // حذف از انتها
numbers.size(); // تعداد عناصر
numbers[0]; // دسترسی به عنصر
deque
#include <deque>
deque<int> dq = {1, 2, 3};
dq.push_front(0); // افزودن به ابتدا
dq.push_back(4); // افزودن به انتها
dq.pop_front(); // حذف از ابتدا
list
#include <list>
list<int> lst = {1, 2, 3};
lst.push_back(4);
lst.push_front(0);
lst.sort(); // مرتبسازی
array
#include <array>
array<int, 5> arr = {1, 2, 3, 4, 5};
arr.size(); // 5
arr[0]; // 1
کانتینرهای انجمنی (Associative Containers)
map
#include <map>
map<string, int> ages;
ages["علی"] = 25;
ages["مریم"] = 23;
ages["رضا"] = 27;
cout << ages["علی"]; // 25
set
#include <set>
set<int> numbers = {5, 2, 8, 1, 9};
numbers.insert(3);
numbers.erase(2);
کانتینرهای تطبیقی (Adapters)
stack
#include <stack>
stack<int> s;
s.push(1);
s.push(2);
s.top(); // 2
s.pop(); // حذف 2
queue
#include <queue>
queue<int> q;
q.push(1);
q.push(2);
q.front(); // 1
q.pop(); // حذف 1
priority_queue
#include <queue>
priority_queue<int> pq;
pq.push(3);
pq.push(1);
pq.push(2);
pq.top(); // 3 (بزرگترین)
الگوریتمها (Algorithms)
#include <algorithm>
#include <vector>
using namespace std;
vector<int> numbers = {5, 2, 8, 1, 9};
// مرتبسازی
sort(numbers.begin(), numbers.end());
// جستجو
auto it = find(numbers.begin(), numbers.end(), 5);
// شمارش
int count = count_if(numbers.begin(), numbers.end(), [](int x) {
return x > 5;
});
بهترین شیوهها
- از vector به جای آرایههای خام استفاده کنید
- از map برای جفتهای کلید-مقدار استفاده کنید
- از set برای مقادیر یکتا استفاده کنید
- از الگوریتمهای STL به جای پیادهسازی دستی استفاده کنید
نکات مهم
- STL از templates استفاده میکند
- همیشه هدرهای مناسب را include کنید
- کانتینرها حافظه را خودکار مدیریت میکنند
- الگوریتمها روی iteratorها کار میکنند
این مبحث بخشی از دوره آموزش کامل C++ است.