ما هي STL؟
STL (مكتبة القوالب القياسية) مجموعة حاويات وخوارزميات جاهزة وفعّالة: المتّجهات، الخرائط، المجموعات، وخوارزميات الترتيب والبحث. مبنية على القوالب، فتعمل مع أي نوع.
المتّجه (vector)
مصفوفة ديناميكية تنمو وتتقلّص تلقائيًّا — البديل الحديث للمصفوفات
الثابتة. يحتاج <vector>:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> numbers = {10, 20, 30};
numbers.push_back(40); // إضافة للنهاية
cout << numbers[0]; // 10
cout << numbers.size(); // 4
return 0;
}
الإضافة والحذف
vector<string> names = {"علي", "سارة"};
names.push_back("خالد"); // إضافة للنهاية
names.pop_back(); // حذف الأخير
names.insert(names.begin(), "نور"); // إضافة في البداية
names.clear(); // مسح الكل
cout << names.empty(); // 1 (فارغ)
المرور على المتّجه
vector<int> scores = {85, 90, 78};
// for-each (الأنظف)
for (int score : scores) {
cout << score << " ";
}
// بالفهرس
for (int i = 0; i < scores.size(); i++) {
cout << scores[i] << " ";
}
مثال: حساب المجموع والمتوسّط
vector<int> nums = {10, 20, 30, 40};
int sum = 0;
for (int n : nums) sum += n;
cout << "المجموع: " << sum << endl; // 100
cout << "المتوسّط: " << sum / nums.size(); // 25
دوال مفيدة
| الدالة | الوظيفة |
|---|---|
push_back(x) | إضافة للنهاية |
pop_back() | حذف الأخير |
size() | عدد العناصر |
empty() | فحص الفراغ |
clear() | مسح الكل |
at(i) | وصول آمن |
vector مقابل المصفوفة
💡 يُفضّل
vectorعلى المصفوفات الثابتة في C++ الحديث: حجمه مرن، يعرف حجمه، ويدير ذاكرته تلقائيًّا — بلاnew/delete.
أخطاء شائعة
- الوصول لفهرس خارج الحدود بـ
[](لا فحص) — استخدم.at()للأمان. - نسيان
#include <vector>.
🎯 التالي: حاويات STL والخوارزميات.