كورس C++ المتوسط – الحلقة الثالثة: الـ Vector و STL وبداية C++ الحديثة
#برمجة
مقدمة
مرحباً بك في الحلقة الثالثة من المستوى المتوسط في C++.
في الحلقة السابقة تعلمنا:
- التعامل المتقدم مع المصفوفات
- التعامل المتقدم مع النصوص
- البحث داخل البيانات
- بناء مشاريع صغيرة
اليوم سندرس شيئاً يستخدمه المبرمجون المحترفون يومياً:
Vector
وهو بديل أقوى وأذكى من المصفوفات التقليدية.
كما سنتعرف على:
STL (Standard Template Library)
وهي واحدة من أقوى المكتبات الموجودة في C++.
لماذا لا نستخدم Arrays دائماً؟
لنفترض أننا كتبنا:
int numbers[5];
المشكلة هنا:
- الحجم ثابت
- لا يمكن زيادته بسهولة
- إدارة البيانات تصبح أصعب
مثال:
إذا احتجت 6 عناصر بدلاً من 5 فستضطر لتعديل الكود.
ما هو Vector؟
الـ Vector عبارة عن مصفوفة ديناميكية.
يعني:
- يكبر تلقائياً
- يصغر تلقائياً
- أسهل في الاستخدام
إضافة المكتبة
#include <vector>
إنشاء Vector
#include <vector>
using namespace std;
vector<int> numbers;
إضافة عناصر
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
مثال كامل
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> numbers;
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
cout << numbers[0] << endl;
cout << numbers[1] << endl;
cout << numbers[2] << endl;
return 0;
}
معرفة عدد العناصر
cout << numbers.size();
مثال
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> numbers;
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
cout << numbers.size();
return 0;
}
الناتج:
3
المرور على عناصر Vector
for(int i = 0; i < numbers.size(); i++)
{
cout << numbers[i] << endl;
}
حذف آخر عنصر
numbers.pop_back();
مثال
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> numbers;
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
numbers.pop_back();
cout << numbers.size();
return 0;
}
تفريغ الـ Vector
numbers.clear();
التحقق إذا كان فارغاً
if(numbers.empty())
{
cout << "Empty";
}
إنشاء Vector مع قيم جاهزة
vector<int> numbers = {10,20,30,40,50};
الطباعة باستخدام for-each
هذه من ميزات C++ الحديثة.
for(int num : numbers)
{
cout << num << endl;
}
ما هي STL؟
STL تعني:
Standard Template Library
وهي مجموعة أدوات جاهزة تساعدك على بناء البرامج بسرعة أكبر.
من أشهر أجزاء STL
| الأداة | الوظيفة |
|---|---|
| Vector | مصفوفة ديناميكية |
| String | النصوص |
| Pair | تخزين قيمتين |
| Queue | طابور |
| Stack | مكدس |
| Map | تخزين بيانات بمفتاح وقيمة |
| Algorithm | خوارزميات جاهزة |
أول أداة: Pair
تخزن قيمتين معاً.
#include <iostream>
using namespace std;
int main()
{
pair<string,int> student;
student.first = "Ali";
student.second = 95;
cout << student.first << endl;
cout << student.second;
return 0;
}
استخدام Algorithm
أضف المكتبة:
#include <algorithm>
ترتيب البيانات بسهولة
sort(numbers.begin(), numbers.end());
مثال كامل
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> numbers = {5,1,9,3,2};
sort(numbers.begin(), numbers.end());
for(int num : numbers)
{
cout << num << " ";
}
return 0;
}
الناتج:
1 2 3 5 9
الترتيب العكسي
sort(numbers.rbegin(), numbers.rend());
البحث الجاهز
if(binary_search(numbers.begin(), numbers.end(), 30))
{
cout << "Found";
}
إيجاد أكبر عنصر
cout << *max_element(numbers.begin(), numbers.end());
إيجاد أصغر عنصر
cout << *min_element(numbers.begin(), numbers.end());
مشروع مصغر: إدارة قائمة درجات
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> grades;
grades.push_back(95);
grades.push_back(80);
grades.push_back(70);
for(int grade : grades)
{
cout << grade << endl;
}
return 0;
}
مشروع مصغر: ترتيب درجات الطلاب
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> grades = {90,75,100,60,85};
sort(grades.begin(), grades.end());
for(int grade : grades)
{
cout << grade << " ";
}
return 0;
}
متى نستخدم Vector؟
استخدم Vector عندما:
✔ لا تعرف عدد العناصر مسبقاً
✔ تريد إضافة وحذف عناصر
✔ تريد كوداً أسهل وأقصر
أخطاء شائعة
❌ استخدام Array عندما تحتاج حجم متغير
❌ نسيان:
#include <vector>
❌ الوصول إلى عنصر غير موجود
مثال:
numbers[100]
بينما حجم الـ Vector أصغر من ذلك.
تمارين
التمرين 1
أنشئ Vector يحتوي على 10 أرقام واطبعها.
التمرين 2
اطلب من المستخدم إدخال 5 أرقام داخل Vector.
التمرين 3
رتب الأرقام تصاعدياً.
التمرين 4
اعثر على أكبر رقم وأصغر رقم.
التمرين 5
اصنع برنامج قائمة مهام (To-Do List) باستخدام Vector.
ملخص الحلقة الثالثة
في هذه الحلقة تعلمنا:
- Vector
- push_back
- pop_back
- size
- empty
- Pair
- STL
- sort
- max_element
- min_element
في الحلقة الرابعة من المستوى المتوسط سنتعلم:
🔥 المؤشرات بشكل أعمق
🔥 الذاكرة الديناميكية Dynamic Memory
🔥 new و delete
🔥 بناء برامج أكثر احترافية والتحكم في الذاكرة مثل المبرمجين المحترفين. 🚀

تعليقات
إرسال تعليق