کتابخانه استاندارد (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;
});

بهترین شیوه‌ها

نکات مهم

این مبحث بخشی از دوره آموزش کامل C++ است.

ابزارهای مرتبط