دروس الوحدة (1/2)
المصفوفات والمتجهات
في لغة C++، تتم إدارة مجموعات البيانات بشكل أساسي من خلال أداتين: مصفوفات النمط القديم (مصفوفات النمط C) و المتجهات (std::vector). يعد فهم الفرق بين الذاكرة الثابتة والديناميكية أمرًا أساسيًا لكتابة تعليمات برمجية فعالة.
1. المصفوفات الثابتة (مصفوفات النمط C)
المصفوفة عبارة عن مجموعة من العناصر من نفس النوع المخزنة في مواقع متجاورة في الذاكرة. يجب أن يكون حجم المصفوفة الثابتة معروفًا في وقت الترجمة ولا يمكن تغييره لاحقًا:
int grades[5] = {18, 22, 25, 28, 30}; // Array of 5 integersالخصائص الرئيسية:
- الحجم الثابت: لا يمكنك إضافة عناصر أو إزالتها في وقت التشغيل.
- تخصيص المكدس: سريع جدًا في التخصيص وإلغاء التخصيص.
- الوصول: يتم عبر عامل الفهرس
[](على سبيل المثال،grades[0]للعنصر الأول).
2. المتجهات الديناميكية (std::vector)
توفر مكتبة القوالب القياسية C++ (STL) الفئة std::vector، والتي تمثل مصفوفة ديناميكية. لاستخدامه، يجب عليك تضمين رأس <vector>:
#include <vector>
std::vector<int> numbers; // Creates an empty vector of integersالعمليات المشتركة:
- إلحاق بالنهاية: يقوم الأسلوب
.push_back(value)بإدراج عنصر في نهاية المتجه، وإعادة تخصيص الذاكرة تلقائيًا إذا لزم الأمر. - الحجم: تقوم الطريقة
.size()بإرجاع عدد العناصر الموجودة حاليًا في المتجه. - الوصول الآمن: بالإضافة إلى عامل التشغيل
[]، يمكنك استخدام الأسلوب.at(index)(على سبيل المثال،numbers.at(0))، والذي يطرح استثناءً إذا كان الفهرس خارج الحدود.
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores now contains {90, 85, 95}
std::cout << scores.size(); // Prints 3جربه بنفسك
قم بتعريف std::vector للأعداد الصحيحة المسماة بالأرقام. أضف القيم 10 و20 و30 بداخله باستخدام طريقة .push_back()، ثم اطبع حجمه باستخدام أرقام.size().
إظهار التلميح
قم بتعريف المتجه باستخدام أرقام std::vector<int>؛ وأدخل الأرقام الثلاثة باستخدام `.push_back(value)`، واطبعه باستخدام `std::cout <<أرقام.size();`.
الحل متاح بعد 3 من المحاولات
بشكل رئيسي، يتم تعريف مجموعة من الدرجات من 5 عناصر. اكتب حلقة for لحساب مجموع كل العناصر في المصفوفة، وقم بتخزينها في المتغير sum، ثم اطبعها باستخدام std::cout.
إظهار التلميح
استخدم `for (int i = 0; i < 5; ++i)`حلقة وقم بجمع كل عنصر داخل الحلقة باستخدام`sum += Grades[i];`.
الحل متاح بعد 3 من المحاولات
ما هي الطريقة الصحيحة لإلحاق عنصر بنهاية std::vector في C++؟
std::vector<int> numbers; // come aggiungere il valore 50?