🔥 أحدث الأخبار

موقع يهتم بكل ماهو جديد في عالم التكنولوجيا والرياضة

كورس C++ المتوسط – الحلقة الثالثة: الـ Vector و STL وبداية C++ الحديثة

 

كورس 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
🔥 بناء برامج أكثر احترافية والتحكم في الذاكرة مثل المبرمجين المحترفين. 🚀


تعليقات

💬 🙋🏻‍♂️